1 pièce(s) jointe(s)
Problème E/S fichier fstream
Bonjour,
je suis débutant en C++ et je suis nouveau dans ce forum. Je travaille sur un programme où je veux ouvrir un fichier texte et stocker les données dans une structure.
la structure est un tableau de structures.
le fichier donnee.txt est ecrit de la manière suivante:
int string string
num1 nom1 prenom1
num2 nom2 prenom 2
...
Mon probleme se trouve dans la fonction lire(,). lorsque (après avoir compté le nombre de lignes dans le fichier dans la fonction init(,) ) le programme ne se positionne pas au debut du fichier pr lire les données et les stocker une à une dans la structue. J'ai pense qu'il y a aussi un probleme dans la structure de données ou dans la syntaxe pr lecriture dans la structure.
Merci de m'aider à resoudre ce problème.
Bonne journée à tous
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct etudiant
{
int num;
string nom;
string prenom;
};
struct etuds
{
etudiant *cont;
int taille;
};
void afficher(etudiant &e)
{
cout << e.num << e.nom << e.prenom << endl;
}
void lire (etuds &e, ifstream &fichier_entree)
{
int j=0;
//Probleme repositionnement à l'entete du fichier
while (!fichier_entree.eof()) //.eof retourne tjrs 1:
//impossible de se repositionner au debut
{
fichier_entree >> e.cont[j].num >> e.cont[j].nom >> e.cont[j].prenom; // Probleme structure
j++;
}
}
void init(etuds &e, ifstream &fichier_entree)
{
char buf[1024];
int n=0;
while(!fichier_entree.eof())
{
fichier_entree.getline(buf,1024);
n++; //compteur nombre de lignes dans le fichier
}
e.cont=new etudiant[n];
e.taille=n;
}
int main()
{
etuds e;
ifstream fichier_entree("c:/donnee.txt");
init(e, fichier_entree);
lire (e, fichier_entree);
for(int i=0; i<e.taille;i++)
afficher(e.cont[i]);
return 0;
} |