Bonjour,
J'aimerais extraire des données du secteur de boot d'une partition ntfs, mais je n'arrive pas à utiliser la fonction strncpy pour récupérer chaque morceau.
Voici la ligne qui pose problème:
strncpy(boot_sector.oem_id,*(memblock+3),8);
Le 3 correspond à l'offset, et le 8 correspond à la longueur.
memblock est un pointeur sur un tableau de char, oem.id est un tableau de char.
Voici mon code pour l'instant:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct ntfs_boot_sector {
char oem_id[8];
char bytes_per_sector[2];
char sector_per_cluster[1];
char mft_cluster_number[8];
char mftmirr_cluster_number[8];
char bytes_or_Clusters_Per_File_Record_Segment[1];
char end_of_sector_Marker[2];
} ;
ntfs_boot_sector init_boot_sector(string partition, int offset = 0) {
struct ntfs_boot_sector boot_sector;
ifstream file(partition, ios::in|ios::binary);
if (file.is_open())
{
char * memblock;
memblock = new char [512];
file.seekg(offset);
file.read(memblock, 512);
file.close();
strncpy(boot_sector.oem_id,*(memblock+3),8);
cout << boot_sector.oem_id << endl;
delete[] memblock;
return boot_sector;
}
else cout << "can't open partition or file" << endl;
}
int main() {
init_boot_sector("bootsector",239616);
return 0;
}
Est-ce que j'utilise la bonne fonction?
Si vous avez des conseils pour garder un code propre et lisible je veux bien aussi.
Merci d'avance,
Naziel