Voila, j'ai un petit problème avec une boucle WHILE.

Avec ce programme, je lis un fichier texte et je verifie que je trouve bien la chaine de caractère saisie, et dans le cas ou il ne trouve pas je souhaite recommencer jusqu'à le trouver.

Avec ce programme, si à la premiere demande j'indique le bon filtre, pas de probleme il trouve.

Si par contre, je lui donne un mauvais filtre en premier, j'ai beau rentré un bon filtre par la suite, il ne le trouve jamais.

Si je ne ss pas clair n'hesitez pas a me le dire!!!!!

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
57
58
59
60
* fichier2.c */
#include <stdio.h>
#include <string.h>
 
void TestFiltre ()
{
   FILE *TXT = fopen ("fichier.txt","r");
 
char filtre[50];
int filter;
 
printf("Quel fltre voulez vous appliquer?\n");
gets(filtre);
printf("\n");
printf("Le filtre souhaite est: %s\n\n", filtre);
printf("Test de validite.........\n\n");
 
while (filter!=1)
{
 
   if (TXT != NULL) /* Si le fichier est ouvert*/
   {
     char ligne[50];
 
while (fgets (ligne, sizeof ligne, TXT) != NULL)     /* lecture des lignes */
{
 
	if	(strstr (ligne , filtre) != 0)		/*Condition pour arretter la boucle: retrouver le filtre dans le .txt*/
		{			
			printf ("Ce filtre est valide\n"); /* filtre trouvé*/
			fclose (TXT);				/* fermeture du fichier texte*/
		}	
	filter=1;
}
 
if	(strstr (ligne , filtre) == 0)			/* filtre non trouvé*/
{printf ("Ce filtre est non valide, Recommencez!! \n\n");
filtre[0]='\0';
}
filter=0;
 
 
gets(filtre);
   }
   else
   {
      printf ("Erreur d'ouverture du fichier\n");
	  filter=0;
   }
 
 //  return 0;
 
}
}
 
void main ()
 
{
	TestFiltre();
}