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 :

[macos x] utilisation bizarre de getchar();


Sujet :

C

  1. #1
    Membre régulier Avatar de clampin
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 96
    Points : 105
    Points
    105
    Par défaut [macos x] utilisation bizarre de getchar();
    Bonjour,

    Je continue a jouer un peu avec le C (non, je ne suis pas découragé)....

    j'ai fait ce week-end deux exercices de mon bouquin, et j'ai un truc bizarre avec getchar().

    En fait je veux que l'utilisateur appuye sur une touche pour quitter le programme. Truc à priori très con....

    On me dit dans ce cas d'utiliser getchar() présente dans stdio.h.

    Alors voilà j'ai donc un code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include <stdio.h>
     
    int main()
    {
    	int multi[2][4]; //définition d'un tableau à 2 dimensions
    	// on affiche la taille des tableaux
     
    	printf("\nLa taille de multi est égale à %u", sizeof(multi));
    	printf("\nLa taille de multi[0] est égale à %u", sizeof(multi[0]));
    	printf("\nLa taille de multi[0][0] est égale à %u", sizeof(multi[0][0]));
    	printf("\n");
     
    	getchar();  // on attends que l'utilisateur tape sur une touche
     
    	return 0;  // on quitte
    }
    et avec ce code getchar() fonctionne bien

    par contre avec cet exemple plus con...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main ()
    {
     
    	float pi=3.1415;
    	float rayon;
     
    	printf("Rayon du cercle ? (par exemple : 15.00)\n");
    	scanf("%f", &rayon);
     
    	rayon=rayon * pi;
     
    	printf("\nTotal %.4f\n",rayon);
    	printf("\n");
     
    	getchar();
     
    	return 0;
    }
    Par contre ici, ça ne marche pas... mon programme quitte tout seul.

    J'avoue que ça me perturbe.

    Plateforme Macos X. Si quelqu'un peut m'explique le phénomène....

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    getchar trouve un caractère non consommé par le scanf qui précède (vraissemblablement le marqueur de fin de ligne).

  3. #3
    Membre régulier Avatar de clampin
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 96
    Points : 105
    Points
    105
    Par défaut
    donc par exemple utiliser la fonction fflush(stdin); ?

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par clampin
    donc par exemple utiliser la fonction fflush(stdin); ?
    fflush n'est défini que pour les flux sortant, stdout par exemple.

    Pour vider le buffer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int c;
     
    while ((c = fgetc(stdin)) != '\n' && c != EOF);

  5. #5
    Membre régulier Avatar de clampin
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 96
    Points : 105
    Points
    105
    Par défaut
    Citation Envoyé par Skyrunner
    fflush n'est défini que pour les flux sortant, stdout par exemple.

    Pour vider le buffer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int c;
     
    while ((c = fgetc(stdin)) != '\n' && c != EOF);

    Merci, je le note, et j'avais lu ça dans la FAQ après avoir posté ma réponse avec fflush...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/01/2011, 19h37
  2. Réponses: 4
    Dernier message: 21/02/2010, 13h20
  3. [X11] Bundle MacOS utilisant X11
    Par Invité dans le forum Développement OS X
    Réponses: 9
    Dernier message: 21/04/2007, 12h41
  4. [Débutant] Utilisation de getchar.
    Par Lucky-94 dans le forum C
    Réponses: 13
    Dernier message: 06/01/2007, 18h44

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