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   -
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 ^^

A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

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

Cdlt,
0
linkcr15 Messages postés 362 Date d'inscription   Statut Membre Dernière intervention   12
 
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   Statut Membre Dernière intervention   12
 
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