Impossible de détecter fin de fichier C
linkcr15
Messages postés
362
Date d'inscription
Statut
Membre
Dernière intervention
-
linkcr15 Messages postés 362 Date d'inscription Statut Membre Dernière intervention -
linkcr15 Messages postés 362 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous!
J'ai un problème de programmation en langage C. Je n'arrive pas à détecter la fin d'un fichier que j'ouvre et je ne sais pas d'où viens le problème. Voici mon code :
while (!feof(fichier)) {
fscanf(fichier,"%s %s\n",logfic,mdpfic);
if ((strcmp(login, logfic)==0)&&(strcmp(mdp, mdpfic)==0))
{
trouve=1;
printf("j'ai trouve!");
}
printf("fin de ligne");
}
Le programme m'affiche bien les lignes composés de deux mots (il n'y a que des lignes composées de deux mots), il m'affiche bien aussi "fin de ligne" quand il doit dans la console, sauf que le programme ne détecte pas la fin du fichier et il s'arrête (pas de boucle infini, il se bloque juste). J'ai l'impression qu'avec le scanf que je fais à chaque fois, le pointeur fichier passe à côté du symbole de fin de fichier et ne le détecte donc pas. J'ai essayé plusieurs techniques de fin de fichier qui ont tous aboutit soit au même résultat, soit à des boucles infinies où il répétait la dernière ligne.
Est-ce que quelqu'un peut m'aider svp, j'ai vraiment besoin d'aide, je comprend pas où est mon erreur.
Merci d'avance et je reste à votre entière disposition pour d'autres questions ^^
J'ai un problème de programmation en langage C. Je n'arrive pas à détecter la fin d'un fichier que j'ouvre et je ne sais pas d'où viens le problème. Voici mon code :
while (!feof(fichier)) {
fscanf(fichier,"%s %s\n",logfic,mdpfic);
if ((strcmp(login, logfic)==0)&&(strcmp(mdp, mdpfic)==0))
{
trouve=1;
printf("j'ai trouve!");
}
printf("fin de ligne");
}
Le programme m'affiche bien les lignes composés de deux mots (il n'y a que des lignes composées de deux mots), il m'affiche bien aussi "fin de ligne" quand il doit dans la console, sauf que le programme ne détecte pas la fin du fichier et il s'arrête (pas de boucle infini, il se bloque juste). J'ai l'impression qu'avec le scanf que je fais à chaque fois, le pointeur fichier passe à côté du symbole de fin de fichier et ne le détecte donc pas. J'ai essayé plusieurs techniques de fin de fichier qui ont tous aboutit soit au même résultat, soit à des boucles infinies où il répétait la dernière ligne.
Est-ce que quelqu'un peut m'aider svp, j'ai vraiment besoin d'aide, je comprend pas où est mon erreur.
Merci d'avance et je reste à votre entière disposition pour d'autres questions ^^
A voir également:
- Impossible de détecter fin de fichier C
- Fichier bin - Guide
- Fichier epub - Guide
- Impossible de supprimer un fichier - Guide
- Fichier rar - Guide
- Comment détecter un traceur sur téléphone - Accueil - Confidentialité
4 réponses
Tu dois pouvoir faire comme ceci :
while (fscanf(fichier,"%s %s\n",logfic,mdpfic)>0) { if ((strcmp(login, logfic)==0)&&(strcmp(mdp, mdpfic)==0)) { trouve=1; printf("j'ai trouve!"); } printf("fin de ligne"); }La confiance n'exclut pas le contrôle
Sans "\n", je n'arrive pas à changer de ligne et donc je ne détecte plus la bonne séquence "%s %s".
Je vais tester ce que m'a donné KX et je vous redis quoi^^
Je vais tester ce que m'a donné KX et je vous redis quoi^^
Alors, avec la méthode de KX, la première ligne de mon fichier n'est pas analysée, et le programme me bloque toujours si j'entre un bon login et un bon mot de passe (sauf la première combinaison car elle n'est pas analysée). Si une mauvaise combinaison est rentrée, il n'y a aucun problème, le programme s'exécute normalement je trouve ça très bizarre...