All pastes #965548 Raw Edit

Someone

public text v1 · immutable
·published 2008-04-01 01:14 UTC
rendered paste body
#include <iostream>
#include <fstream>


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 = 0;
        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*/);
                Index[i].addresse = i * sizeof(Voit);
                idFileIndex << Voit[i].numero << " " << Index[i].addresse << endl;
        }
		for (i = 0; i < count; i++) {
			cout << "numero " << Index[i].numero << 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: HORS FONCTION " << 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;

}