voila mon probleme :
J'ai une fonction qui lit dans un fichier jusqu'a ce qu'elle trouve la chaine désirée ou jusqu'a ce que ce soit la fin de ce fichier .

J'ai utiliser un objet ifstream.
Mon probleme est que lorsque j'appelle la méthode : monIfstream.close();
Le programme plante. Si je n'appelle pas cette méthode : le programme plante au return de ma fonction ...

Je ne comprend pas d'ou cela peut venir

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
char* Tricap :: Login(char *Chaine)
{
	// nous devons recevoir deux parametres : respectivement le nom et le password
 
	ifstream inFile;
	int trouve=0;
	char *Login, *Password, *toReturn=new char[10], *LoginInFile, *PassInFile;
 
	inFile.open(".//DATA//FileLogin", ios::in);
 
	if(!inFile.rdbuf()->is_open())
	{
		cout<<"ERREUR DOUVERTURE DU FICHIER";
		exit(1); // il faudra implementer une exception
	}
 
	cout<<"Demande de login"<<endl;
// 	
	// il faut séparer les parametres 	
	Login = Parse(Chaine);
	Password = Parse(Chaine);
	cout<<"Login : "<<Login<<endl<<"Pass : "<<Password<<endl<<endl;
 
	LoginInFile=new char[200];
	PassInFile=new char[200];
 
	while(!inFile.eof() && trouve==0)
	{
		char ligne[256];
		inFile.getline(ligne, sizeof(ligne));
		sscanf(ligne, "%s = %s", LoginInFile, PassInFile);
		cout<<"LOGIN FILE : "<<LoginInFile<<"  PASS FILLE : "<<PassInFile<<endl;
		if(strcmp(LoginInFile, Login) == 0)
			if(strcmp(PassInFile, Password) == 0)
			{
				toReturn=new char[15];
				strcpy(toReturn, "oui");
				trouve=1;
				cout<<"OK2"<<endl;	
				inFile.close();			
			}
	}
	if(trouve==0)
	{
		toReturn=new char[15];
		strcpy(toReturn, "non");
		cout<<"OK3"<<endl;	
		inFile.close();
	}
	cout<<"OK"<<endl;
 
 
	return toReturn;
 
}
Je compile sous linux (suse) grace a gcc. Cette fonction est exécutée par un thread

Merci de votre aide