Problème lecture de fichier txt

totoscill Messages postés 48 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 10 décembre 2009 - 19 juin 2007 à 15:09
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 - 19 juin 2007 à 23:49
Bonjour.
J'utilise un programme qui lit un ichier pour stocker les infos.
j'aimerais compter le nombre de lignes de ce fichier avant de récupérer ces infos.
Pour cela, j'utilise cette fonction:
int

CountNbLine(
const string & file){

if(File){

while ( File.ignore( numeric_limits<
int>::max(),
'\n' ) ) {

++lines;

}

}

else{

cout <<

"Impossible d'ouvrir le fichier !" << endl;

return 0;
//l'ouverture à échoué, on quitte...}

return lines;}

J'utilise ensuite cette fonction dans mon programme principale:

File.open(FileName,ios::in);

//ouverture du fichier

if

(File){

cout<<

"!!!file open!!!\n\n\n"<<endl;
//instructionsNbLine=CountNbLine(FileName);

for(i=0; i<NbLine ;i++){

while ( getline( File, line ) ){

strncpy( InfoLine, line.c_str(), size );

if (strncmp(InfoLine,
";[GPS]",6)==0){

Dir=atof(InfoLine+72);

cout<<

"Direction:"<<Dir<<endl;}

else
if(strncmp(InfoLine,
";",1)!=0){

NbMeas=atof(InfoLine+0);

if (Psimu==
'Y'){

if(NbMeas<100){

Power=-90;

DistRel=atof(InfoLine+17);

}

else{

Power=-90;

DistRel=atof(InfoLine+18);

}

}

else
if(Psimu==
'N'){

if(NbMeas<100){

Power=atof(InfoLine+2);

DistRel=atof(InfoLine+17);

}

else{

Power=atof(InfoLine+3);

DistRel=atof(InfoLine+18);

}

}

//cout <<"Numero de mesure:"<< NbMeas<<"\tPuissance:"<< Power<<"\tDistance:" << DistRel<<"\tDirection:"<<Dir << endl;

//Dir=(Dir*3.141592654)/180; //conversion deg to radConvertValues[i][0]=DistRel;

ConvertValues[i][1]=Dir;

ConvertValues[i][2]=Power;

cout<<ConvertValues[i][0]<<

"\t"<<ConvertValues[i][1]<<
"\t"<<ConvertValues[i][2]<<endl;

//cout<<"read of the file "<<FileName<<"..."<<endl;}

}

}

}

Le problème est que quand j'utilise cette fonction, le programme n'éssaie plus de lire mon fichier donc je ne récupère plus mes infos.
J'ai essayer en ouvrant et fermant mon fichier pour compter le nombre de ligne puis pour récupérer mes infos mais ça ne marche pas non plus.

Quelqu'un aurait il une solution?

Je vous remercie
Cordialment

2 réponses

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
19 juin 2007 à 17:17
Tu as essayé en API brute sans les surcouches, parce que la j'ai l impression de redecouvrir le c++

int nl:
FileTexte = fopen (nomfichier,"r");
while(c!=EOF) {
c=fgetc(FileTexte);
if (c=='\n') { nl++; }
}
return nl:
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
19 juin 2007 à 23:49
int



CountNbLine(
const




string & file)

devrais plutot etre 

int

CountNbLine(const fstream & file)




car la tu ne calcule pas  le nombre de ligne de ton fichier mais plutot autre chose sur ton nom de fichier
voila essai avec cela car moi ca marche tres bien
0