All pastes #960448 Raw Edit

Untitled

public text v1 · immutable
#960448 ·published 2008-03-28 02:58 UTC
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;

}