rendered paste body#include <iostream>
#include <fstream>
#include <string.h>
struct Voiture {
char numero[10];
char marque[10];
double prix;
} Voit[30];
struct Adressage {
char numero[10];
int addresse;
} Index[30];
using namespace std;
void saisieVoiture(int count) {
int i;
for (i = 0; i < count; i++) {
cout << "Entrez le numero de la voiture: ";
cin >> Voit[i].numero;
cout << "Entrez la marque de la voiture: ";
cin >> Voit[i].marque;
cout << "Entrez le prix de la voiture: ";
cin >> Voit[i].prix;
}
}
bool stockerVoiture(char fileName[], char fileNameIndex[], int count) {
int i;
ofstream idFile(fileName, ios::binary);
ofstream idFileIndex(fileNameIndex, ios::out);
if (idFile.fail() || idFileIndex.fail()) return false;
for (i = 0; i < count; i++) {
idFile.write((char *)&Voit,sizeof(Voit));
memcpy(Index[i].numero, Voit[i].numero, 10);
//strncpy_s(Index[i].numero, 10, Voit[i].numero/*,_TRUNCATE*/);
cout << "numero " << Index[i].numero << endl;
Index[i].addresse = i * sizeof(Voit);
idFileIndex << Voit[i].numero << " " << Index[i].addresse << endl;
}
return true;
}
bool chargerFichier(char fileName[]) {
ifstream idFile(fileName, ios::binary);
int i = 0;
if (idFile.fail()) return false;
while (!idFile.eof()) {
idFile.read((char *)&Voit[i],sizeof(Voit));
if (idFile.peek() == EOF) break;
i++;
}
return true;
}
int chercherVoiture(char numero[], int count) {
int i;
cout << "Index : " << Index[0].numero << endl;
for (i = 0; i < count; i++) {
if (strcmp(numero, Index[i].numero)==0)
return Index[i].addresse;
}
return -1;
}
bool afficherVoiture(char fileName[], int addr) {
Voiture res;
ifstream idFile(fileName, ios::binary);
if (idFile.fail()) return false;
idFile.seekg(addr, ios::beg);
idFile.read((char *)&res,sizeof(res));
cout << res.numero << " " << res.marque << " " << res.prix << endl;
return true;
}
int main(){
int count, addr;
char numero[10] = "3";
char fileName[] = "c:\\temp\\FichierVoiture.bin";
char fileNameIndex[] = "c:\\temp\\IndexVoiture.txt";
cout << "Combien de voitures allez vous entrer: ";
cin >> count;
saisieVoiture(count);
if (stockerVoiture(fileName, fileNameIndex, count)) {
if (!chargerFichier(fileName)) {
cout << "Erreur lors du chargement du fichier" << endl;
exit(1);
}
}
else {
cout << "Erreur lors de l'ecriture du fichier" << endl;
exit(1);
}
cout << "numero: " << Index[0].numero << endl;
addr = chercherVoiture(numero, count);
cout << "adresse : " << addr << endl;
if (addr > -1)
afficherVoiture(fileName, addr);
else
cout << "Numero de voiture " << numero << " non existante" << endl;
}