Pourquoi un double affichage en C?
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Pourquoi un double affichage en C?



  1. #1
    invite715cd7c4

    Question Pourquoi un double affichage en C?


    ------

    Voici mon problème, je commence le language C et je m'entraine en faissant des petits programmes (des truc de base quoi...).

    Ma dernière idée est de créer mon propre convertisseur binaire/décimal/héxa

    Mais quand j'écris :

    printf ("Quel est est le systeme que vous voulez convertir ?\n (B)inaire, (D)ecimal ou (H)exadecimal?\n");
    scanf ("%c", &modeA);
    while ((modeA!='B') && (modeA!='b') && (modeA!='D') && (modeA!='d') && (modeA!='H') && (modeA!='h'))
    {
    printf ("\n\nQuel est est le systeme que vous voulez convertir ?\n (B)inaire, (D)ecimal ou (H)exadecimal?\n");
    scanf ("%c", &modeA);
    }


    et que j'écris expres une valeur ne rentrant pas dans les conditions de sortie de boucle (pour vérifier si cela fonctionne bien), je reçois ce message :

    Quel est est le systeme que vous voulez convertir ?
    (B)inaire, (D)ecimal ou (H)exadecimal?
    Quel est est le systeme que vous voulez convertir ?
    (B)inaire, (D)ecimal ou (H)exadecimal?




    Quelqu'un pourrait'il m'expliquer le pourquoi du comment?

    -----

  2. #2
    invite98cbb7da

    Re : Pourquoi un double affichage en C?

    Bonjour,
    tu devrais essayer, pour debuger, de mettre dans ta boucle, au début, une instruction:
    system("cls");

    ça effacera ton écran juste avant ta phrase.

  3. #3
    invite7f9fe601

    Re : Pourquoi un double affichage en C?

    Bonjour,

    Une explication simple.
    scanf utilisé avec le format %c lit UN caractère.
    Hors, tu saisis au clavier ton choix, UN caractère, PLUS la touche RETURN pour valider ce choix, qui est aussi UN autre caractère.
    Dans ta boucle, tant que modeA n'est pas l'un des choix autorisés tu ré-affiche le message et tu refais une lecture.
    Le buffer d'entrée (stdin) contient à ce moment la déja un caractère RETURN (oui en C return est considéré comme un caractère normal).
    Tu devrais remplacer la fonction scanf par la fonction getchar ou encore un fgets(chiane, longueur, stdin);.
    Et simplifie ton code aussi, inutile d'avoir 2 fois des lignes identiques.
    (printf et scanf) alors que tout pourrait être dans ta boucle une seule fois en ayant pris soin d'initialiser avant la valeur de modeA à " " par exemple.

  4. #4
    Towl

    Re : Pourquoi un double affichage en C?

    Ou tout simplement en utilisant un do{...} while(); plutot qu'un while(){...}.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  5. A voir en vidéo sur Futura
  6. #5
    JPL
    Responsable des forums

    Re : Pourquoi un double affichage en C?

    Modération pour Djidane

    Je t'invite à lire la charte du forum. Par exemple :

    La courtoisie est de rigueur sur ce forum : pour une demande de renseignements bonjour et merci devraient être des automatismes.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

Discussions similaires

  1. Affichage en double sur site
    Par JPL30 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 09/09/2008, 17h26
  2. Minuterie à double affichage
    Par invite3eaaa435 dans le forum Électronique
    Réponses: 7
    Dernier message: 28/11/2007, 15h54
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...