Erreur fermeture ifstream

xeon666 Messages postés 28 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 14 août 2008 - 10 oct. 2006 à 16:05
xeon666 Messages postés 28 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 14 août 2008 - 10 oct. 2006 à 16:08
Voila mon probleme :
Je lit un fichier séquentiellement et quand j'arrive a la fin ou que j'ai trouve ce que je désire, je sort de ma boucle ferme et le fichier et effectue mon return;

Le probleme est que lorsque si je fait monifstream.close(), mon programme plante a cette instruction. Si je ne le fait pas, le programme plante au return. Voila mon code :

char* Tricap :: GETSEN(char *Chaine)
{
// nous devons recevoir deux parametres : respectivement le nom et le password
ifstream inFile;
int trouve=0;
char *Plaignant, *Accuse, *Date, *toReturn=new char[10];
char *PlaignantFile=new char[200], *AccuseFile=new char[200], *DateFile=new char[200], *Verdict= new char[100];
cout<<"Demande de GETSEN"<<endl;

// il faut séparer les parametres 	
Plaignant = Parse(Chaine);
Accuse = Parse(Chaine);
Date= Parse(Chaine);
cout<<"Plaignant : "<is_open())
{
cout<<"ERREUR DOUVERTURE DU FICHIER";
exit(1); // il faudra implementer une exception
}

while(!inFile.eof() &amp;&amp; trouve==0)
{
char ligne[512];
inFile.getline(ligne, sizeof(ligne));
sscanf(ligne, "%s %s %s = %s", PlaignantFile, AccuseFile, DateFile, Verdict);
cout<<"PLAIGNANT FILE : "<<PlaignantFile<<"  ACCUSE FILLE : "<<AccuseFile<<"  DATE FILLE : "<<DateFile<<"  Verdict FILLE : "<<Verdict<<endl;
if(strcmp(PlaignantFile, Plaignant) == 0)
if(strcmp(AccuseFile, Accuse) == 0)
if(strcmp(DateFile, Date) == 0)
{
trouve=1;
cout<<"OK2"<<endl;	
//inFile.close();			
}
}
if(trouve==0)
{
toReturn=new char[15];
strcpy(Verdict, "Aucune correspondance");
cout<<"OK3"<<endl;	
//inFile.close();
}
cout<<"OK"<<endl;
inFile.close();

return Verdict;



}

2 réponses

xeon666 Messages postés 28 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 14 août 2008
10 oct. 2006 à 16:06
hummmmm erreur de balise
0
xeon666 Messages postés 28 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 14 août 2008
10 oct. 2006 à 16:08
char* Tricap :: GETSEN(char *Chaine)

{

// nous devons recevoir deux parametres : respectivement le nom et le password

ifstream inFile;

int trouve=0;

char *Plaignant, *Accuse, *Date, *toReturn=new char[10];

char *PlaignantFile=new char[200], *AccuseFile=new char[200], *DateFile=new char[200], *Verdict= new char[100];

cout<<"Demande de GETSEN"<<endl;


// il faut séparer les parametres

Plaignant = Parse(Chaine);

Accuse = Parse(Chaine);

Date= Parse(Chaine);

cout<<"Plaignant : "<is_open())

{

cout<<"ERREUR DOUVERTURE DU FICHIER";

exit(1); // il faudra implementer une exception

}


while(!inFile.eof() && trouve==0)

{

char ligne[512];

inFile.getline(ligne, sizeof(ligne));

sscanf(ligne, "%s %s %s = %s", PlaignantFile, AccuseFile, DateFile, Verdict);

cout<<"PLAIGNANT FILE : "<<PlaignantFile<<" ACCUSE FILLE : "<<AccuseFile<<" DATE FILLE : "<<DateFile<<" Verdict FILLE : "<<Verdict<<endl;

if(strcmp(PlaignantFile, Plaignant) == 0)

if(strcmp(AccuseFile, Accuse) == 0)

if(strcmp(DateFile, Date) == 0)

{

trouve=1;

cout<<"OK2"<<endl;

//inFile.close();

}

}

if(trouve==0)

{

toReturn=new char[15];

strcpy(Verdict, "Aucune correspondance");

cout<<"OK3"<<endl;

//inFile.close();

}

cout<<"OK"<<endl;

inFile.close();


return Verdict;




}
0
Rejoignez-nous