EOF:signification.

Résolu
saadinto Messages postés 14 Statut Membre -  
saadinto Messages postés 14 Statut Membre -
Bonjour,
EOF signifie End-Of-File mais ce n'esr pas claire, est ce ke c un caractere comme '\o' fin de chaine ou bien une valeur numerique ?
une tite expliquation si vous permettez.
merci d'avance

14411
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    bonjour,

    la valeur hexa de eof c'est : 1a

    mais c'est une valeur que les programmes ne récupèrent pas nécessairement à la lecture, puisque c'est justement le caractère qui indique que c'est la fin. Donc la plupart du temps il n'est pas retourné dans les données quand on fait une lecture

    par contre le programme qui assure la lecture des données doit recevoir dans le code retour l'indication que la fin du fichier a été atteinte

    cdt
    0
    1. saadinto Messages postés 14 Statut Membre
       
      merci pour ta reponse mais puisk c'est justement le caractère qui indique que c'est la fin :
      pour la fonction fgetc on peut tester si le fichier a etai ouvert fgetc(caractere)!=eof
      mais dn le cas d une chaine de caractere j vx dire fgets elle renvoi un pointeur sur char le test ce fai donc comme cela
      fgets(chaine)!=null
      si je lie ca a ce ke ta di ca vx dire ke null et eof sont les meme
      null et eof siginifient tt les 2 fin de fichier .
      pa claire!
      0
      1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977 > saadinto Messages postés 14 Statut Membre
         
        dans ton prog

        tu testes = eof => le fichier est fini

        si pas eof et pas null, c'est donc un pointeur
        0
      2. Mahmah Messages postés 497 Statut Membre 125 > jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Bonjour,

        Je suis moyennement d'accord.

        Il ne faut pas mélanger fgetc et fgets. cf la section return value.

        Le comportement de fgetc est de renvoyer un caractère ou le caractère EOF en cas de fin de fichier ou d'erreur.
        Le comportement de fgets est de renvoyer un pointeur sur une chaîne ou le pointeur NULL en cas de fin de fichier ou d'erreur.

        L'utilisateur peut ensuite dans ces deux cas vérifier la signification du EOF pour fgetc ou du NULL pour fgets avec les fonctions feof et ferror.

        M.
        0
      3. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977 > Mahmah Messages postés 497 Statut Membre
         
        merci de rectifier je n'avais effectivement pas vu que ce n'était pas la même fonction qui était utilisée (d'ailleurs c'est en quoi comme langage ?)
        0
      4. Mahmah Messages postés 497 Statut Membre 125 > jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention  
         
        C'est du C.

        Y a pas de quoi ;-)
        M.


        PS:
        Petit ajout en passant, il faut bien et bien tester si c'est différent de NULL et non pas de null.
        0
  2. jisisv Messages postés 3678 Statut Modérateur 936
     
    La réponse est dans la man page de fgetc
    fgetc() reads the next character from stream and returns it as an unsigned char cast to an int, or EOF on end of file or error.
    Le prototype de fgetc est
    int fgetc(FILE *stream);
    et non
    char fgetc(FILE *stream);

    Extrait de /usr/include/stdio.h
    /* End of file character.
    Some things throughout the library rely on this being -1. */
    #ifndef EOF
    # define EOF (-1)
    #endif

    On effecue une comparaison avec un (int) -1 , pas avec un char

    Johan
    0
  3. saadinto Messages postés 14 Statut Membre
     
    merci c claire mtn
    j'ai trouver aussi une tite infos: EOF est placée apres le dernier bit d'un fichier
    0