Impossible de détecter fin de fichier C

Fermé
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - 4 janv. 2012 à 22:04
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - 4 janv. 2012 à 22:56
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 ^^

4 réponses

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
4 janv. 2012 à 22:09
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
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 816
4 janv. 2012 à 22:11
Bonjour,

Evite de mettre un "\n" dans ton fscanf.

Cdlt,
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 13
4 janv. 2012 à 22:42
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^^
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 13
4 janv. 2012 à 22:56
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...
0