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 :

Problème expression getchar


Sujet :

C

  1. #1
    Membre à l'essai Avatar de CaptainKrabs
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Problème expression getchar
    Bonjour , je débute en langage C et je rencontre un problème pour évaluer la fonction getchar.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
     
    int main()
    {
    	int w;
     
    	 w = (getchar() != EOF) ;
    	putchar(w);
     
        printf("\n");
     
    	return 0;
    }
    La compilation se passe sans erreur cependant lorsque j'essaye mon programme, la ligne putchar(w); affiche un caractère bizarre

    Nom : Capture du 2018-06-13 16-44-05.png
Affichages : 204
Taille : 11,9 Ko

    Savez-vous d'où vient le problème et comment le résoudre ?
    En vous remerciant par avance de votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Salut,

    qu'entends-tu par évaluer la fonction getchar ?
    getchar retourne un caractère sous forme d'int, ou EOF si on a atteint la fin du flux.
    Toi tu stockes dans w (getchar() != EOF) qui n'est pas un caractère mais une expression booléenne, une expression vraie/fausse. Donc w va valoir soit 1 (vrai) soit 0 (faux), mais les caractères 0 et 1 de la table ASCII ne sont pas vraiment imprimables. 0 correspond au caractère nul, à la fin de chaîne, 1 correspond au code de début d'en-tête.
    https://www.asciitable.com/

    à priori le code devrait plus ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    w = getchar();
    if (w != EOF)
      putchar(w);
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre à l'essai Avatar de CaptainKrabs
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Bonjour, merci pour votre réponse

    Pardon je me suis mal exprimé.
    Concernant les caractères 0 et 1 de la table ASCII, n'y aurais t’il pas moyen de les faire afficher en sortie sinon que je tape un caractère (0) ou non (1) ?

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CaptainKrabs Voir le message
    Concernant les caractères 0 et 1 de la table ASCII, n'y aurais t’il pas moyen de les faire afficher en sortie sinon que je tape un caractère (0) ou non (1) ?
    Bonjour

    Pas facile de te comprendre (ce "sinon que je tape" me laisse un peu sec quant au sens de cette phrase).

    Un caractère c'est un nombre compris entre 0 et 255. Certains caractères sont affichables (leur valeur correspond à un symbole lisible à l'écran). Par exemple le caractère de valeur 97 s'affichera (si tu demandes le bon format d'affichage) sous la forme d'un 'a'.
    De là peut naitre une certaine confusion entre "la valeur du caractère" et "son symbole d'affichage". Surtout quand ce symbole prend la forme d'un chiffre (exemple le symbole '1' correspond au caractère de valeur 49).
    Toutefois on peut établir une correspondance entre "valeur des caractères allant de 0 à 9" et "symboles correspondants allant de '0' à '9'". Si par exemple tu as le caractère de valeur 5, cette valeur ne possède pas de symbole affichable correspondant. Mais si tu veux, quand tu as la valeur 5, afficher '5', c'est pas très compliqué: suffit de rajouter à cette valeur le chiffre 48 (qui correspond au symbole '0') et tu obtiendras alors '5'.
    Exemple: char w=5; printf("%c", w + '0'); // Tu obtiendras alors '5' à l'écran.

    Accessoirement (et par commodité), la notion de "valeur d'un caractère" devient "code ascii" et la notion de "symbole d'affichage" devient plus simplement "caractère". Ainsi on dit alors que le caractère 'a' a pour code ascii 97.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre à l'essai Avatar de CaptainKrabs
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup c'est plus clair maintenant.

    Etendu mais "saisir" .

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

Discussions similaires

  1. Problème expression régulières
    Par LEK dans le forum C#
    Réponses: 2
    Dernier message: 18/04/2007, 12h40
  2. Problème Expression conditionnelle
    Par nicolasferraris dans le forum ASP
    Réponses: 6
    Dernier message: 15/03/2007, 10h52
  3. [RegEx] problème expression régulière
    Par H-bil dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2007, 16h38
  4. Problème expressions régulières
    Par sozie9372 dans le forum Langage
    Réponses: 3
    Dernier message: 07/06/2006, 16h13
  5. Problème expression regulière ??
    Par panaone dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 14h41

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