IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

EOF


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut EOF
    Bonsoir je suis actuellement entrain de lire et faire des exercices du livre "LE LANGUAGE C Norme ANSI" et je bloque sur la valeur de EOF.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
    main()
     
    {
                int c;
               while((c = getchar() != EOF))
               putchar(c);
    }
    Donc j'ai bien compris que on attend la saisie d'un caractere et tant que le caractere saisi est différent de EOF la boucle recommence.Je sais aussi que EOF =-1 mais ce que je comprends pas c'est comment on peut sortir de cette boucle.Si vous pourriez m'éclairé car la je suis un peu bloqué merci bcp.

    gentox

  2. #2
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Sous linux (je ne sais pas sous Windows), tu génères EOF en appuyant sur :
    Ctrl-D

    Voilou :-)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut
    A oui effectivement ca fonctionne ( je programme sous linux ).Ca veut donc dire que Ctrl+D en C vaut -1 ?

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    On n'a pas à savoir comment est codé EOF. Ca veut dire que si tu tapes Ctrl+D sous Linux alors EOF est vrai. Sous Windows, tape ctrl+Z pour obtenir le même résultat

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut
    D'accord, ben merci à vous de m'avoir aidé.
    Bonne soirée.

    gentox

  6. #6
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Citation Envoyé par gentox
    A oui effectivement ca fonctionne ( je programme sous linux ).Ca veut donc dire que Ctrl+D en C vaut -1 ?
    Non je ne pense pas (car d'ailleurs c'est Ctrl-Z (+entree je crois) sous Windows).

    Je crois que Ctrl+D vaut plutot 4 (en fait les Ctrl+<lettre> vallent <lettre>, avec A=0, et Z=26). D'ailleurs si tu fais Ctrl+M (voire Ctrl+J) ca te fais <entree> !
    Le truc c'est que le programme qui gere la "console" (dans laquelle tu tapes) attend un caractere precis (Ctrl+D sous *nix, Ctrl+Z sous windows) et considere alors que l'entree est finie. Mais si tu prend un fichier ce ne sera pas la meme "regle" pour dire que le fichier est fini (mais je ne sais pas s'il y a un caractere sepcial ou si c'est la taille du fichier qui indique sa "fin").

    Euh, je dois pas etre tres clair mais ca doit donner des pistes

  7. #7
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par D[r
    eadLock]
    Je crois que Ctrl+D vaut plutot 4 (en fait les Ctrl+<lettre> vallent <lettre>, avec A=0, et Z=26). D'ailleurs si tu fais Ctrl+M (voire Ctrl+J) ca te fais <entree> !
    Aucune importance, l'implantation peut changer d'une plate-forme à l'autre...
    Mais si tu prend un fichier ce ne sera pas la meme "regle" pour dire que le fichier est fini (mais je ne sais pas s'il y a un caractere sepcial ou si c'est la taille du fichier qui indique sa "fin").
    La fin de fichier sera perçue par les fonctions de lecture (via EOF), et elles echoueront en positionnant les flags d'erreurs comme il faut.. C'est aussi pour ça qu'il existe des fonctions comme feof et ferror...
    :-)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par D[r
    eadLock]mais je ne sais pas s'il y a un caractere sepcial ou si c'est la taille du fichier qui indique sa "fin".
    Moi non plus, ca doit dépendre du système de fichiers de l'OS. C'est l'avantage des possibilités d'abstraction d'un langage que de permettre d'ignorer cette "cuisine"

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gentox
    A oui effectivement ca fonctionne ( je programme sous linux ).Ca veut donc dire que Ctrl+D en C vaut -1 ?
    Non. Ca veut dire que sous Linux, La combinaison de touches Ctrl-D envoi un signal 'fin de lecture' à stdin. La fonction de lecture cesse alors d'attendre et retourne EOF (qui est un int négatif).

    Sous DOS/Windows, c'est Ctrl-Z ou Ctrl-Z<enter>, ça dépend des versions...

Discussions similaires

  1. equivalent EOF
    Par $grm$ dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 21/05/2004, 16h48
  2. Problème avec Do while rs.EOF
    Par lauraned dans le forum ASP
    Réponses: 12
    Dernier message: 21/05/2004, 12h00
  3. Fonction If avec rs.eof problème
    Par M1000 dans le forum ASP
    Réponses: 5
    Dernier message: 24/03/2004, 17h10
  4. modification de fichier EOF
    Par scorbo dans le forum C
    Réponses: 9
    Dernier message: 28/11/2003, 11h35
  5. RecordSet en EOF
    Par jfphan dans le forum ASP
    Réponses: 3
    Dernier message: 06/11/2003, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo