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 :

getchar() & putchar()


Sujet :

C

  1. #1
    Membre confirmé Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Par défaut getchar() & putchar()
    Bonjour,

    Je suis débutant en C. . .

    Je lis en ce moment le fameux K&R, ou "Le Langage C Norme ANSI : 2è Edition".
    Je n'ai pas de misère à comprendre les concepts du C. Cependant, j'aimerais obtenir des précisions de la part de personnes plus expérimentées que moi dans ce domaine.

    Alors, voilà :

    Premièrement, voici un programme montré dans mon livre :
    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);
    }
    Lorsque je l'exécute sur Linux, j'ai un écran noir. Oui, cela est normal...
    J'écris, par exemple, "Hello, world". En sortie, j'obtiens : "Hello, world". Toujours normal.

    Maintenant, voici mes questions :

    [ 1) ] Ce qui me tracasse, c'est que le programme ne fini jamais. Il me redemande toujours d'écrire du texte en entrée. Cependant, le while n'était t'il pas supposé de s'arrêter lorsque l'entier "c" ait pour valeur "EOF"? Cependant, la boucle ne s'arrête jamais... Pourquoi?


    [ 2) ] Je voulais simplement savoir si getchar() demandais en entrée un flot de texte (text strem) en premier lieu, puis ensuite lisait les caractères à l'intérieur du ce flot de texte. Simplement si l'on pouvait me le confirmer. . .


    C'est tout, en tout cas pour le moment.

    Je vous remercie sincèrement pour vos réponses.

    Également, s'il serait possible de spécifier le numéro de la question, simplement pour plus de clarté.


    Merci

  2. #2
    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 Array
    Je suis débutant en C. . .
    En C ou en programmation ? Parce que le C n'est pas un langage pour débutant en programmation...
    Je lis en ce moment le fameux K&R, ou "Le Langage C Norme ANSI : 2è Edition".
    C'est un livre de référence, pas vraiment un livre de formation, en tout cas, certainement pas pour un débutant en programmation.

    Premièrement, voici un programme montré dans mon livre :
    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);
    }
    Lorsque je l'exécute sur Linux, j'ai un écran noir. Oui, cela est normal...
    J'écris, par exemple, "Hello, world". En sortie, j'obtiens : "Hello, world". Toujours normal.

    Maintenant, voici mes questions :

    [ 1) ] Ce qui me tracasse, c'est que le programme ne fini jamais. Il me redemande toujours d'écrire du texte en entrée. Cependant, le while n'était t'il pas supposé de s'arrêter lorsque l'entier "c" ait pour valeur "EOF"? Cependant, la boucle ne s'arrête jamais... Pourquoi?
    Il faut que le flux entrant détecte une fin de lecture. En principe, ce genre de code s'utilise avec des fichiers et des indirections. (Je rappelle que ce n'est pas un livre pour débutant, mais pour expert unixoïde...). Tu es donc censé connaître ton système et taper :
    Mais ca fonctionne aussi avec stdin (connecté au clavier). Dans ce cas, la fin de lecture est simulée par l'appui de la combinaison Ctrl-D sur une machine unixoïde.
    [ 2) ] Je voulais simplement savoir si getchar() demandais en entrée un flot de texte (text strem) en premier lieu, puis ensuite lisait les caractères à l'intérieur du ce flot de texte.
    Oui : http://emmanuel-delahaye.developpez.com/notes.htm#fgetc

  3. #3
    Membre confirmé Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Par défaut
    Ah merci.

    Non, je ne suis pas débutant en programmation, mais débutant en C.

    Cela fait un certain temps que je tourne autour de divers langages, et je connais plusieurs principes. Cependant, je suis débutant en C. . .

    Ce que tu me dis, pour la question #1, si je comprends bien, c'est que getchar(), ne détecte pas EOF dans mon flot de texte. . . Et donc, le while continue toujours. Mais cela se produit seulement si l'entrée est stdin. C'est bien cela?

    Je m'y connais également question UNIX, en tout cas assez bien pour faire des scripts, complier des programmes, comme un kernel, etc.

    J'ai certaines bases. . . Et je comprend assez bien ce livre, mais je désire quelquefois avoir des précisions.

    Je te remercie.

    Cordialement,
    Array

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. demande explication getchar putchar
    Par minixave dans le forum Débuter
    Réponses: 4
    Dernier message: 07/03/2013, 11h27
  2. getchar() et putchar()
    Par al.spec dans le forum C
    Réponses: 1
    Dernier message: 13/04/2010, 08h42
  3. redefinir getchar et putchar
    Par pfeuh dans le forum C
    Réponses: 7
    Dernier message: 24/11/2008, 17h59
  4. putchar / getchar and EOF
    Par exhortae dans le forum Débuter
    Réponses: 4
    Dernier message: 31/10/2008, 13h38
  5. getchar(),atoi() et putchar()
    Par otari dans le forum C
    Réponses: 1
    Dernier message: 30/04/2007, 19h31

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