Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

encore un petit programme qui ne marche pas (langage C)




  1. #1
    benjgru

    encore un petit programme qui ne marche pas (langage C)

    Bonjour,

    j'ai fait un petit programme en C qui renvoie le code ASCII d'une lettre de l'alphabet, c'est bien le cas, mais la boucle "while" ne marche pas...(laréponse est un booléen)
    Il renvoie "lettre ?10" à tout bout de champ...

    Merci pour votre aide.

    Ci-joint le code:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
       int  reponse;
       char lettre;
    
       do
       {
           printf(" lettre ?"),
           scanf ("%c", &lettre);
           printf("%d\n",lettre);
    
           printf ("encore ?");
           scanf("%d",&reponse);
       } while  (reponse==1);
    
      return 0;
    }

    -----

    Dernière modification par Jack ; 20/01/2019 à 23h35. Motif: Ajout balises code, indentation, suppression ligne vides inutiles, etc.

  2. Publicité
  3. #2
    Ikhar84

    Re : encore un petit programme qui ne marche pas (langage C)

    Salut,

    Avant qu'un gentil modo se dévoue pour éditer le post et ajouter les balises code:

    - aucune indentation et code illisible
    - variables déclarées mais non initialisées
    - la variable reponse est un int et pas un booléen, c'est l'expression
    Code:
     reponse==1
    qui retourne un booléen.
    J'ai glissé Chef !

  4. #3
    Fustigator

    Re : encore un petit programme qui ne marche pas (langage C)

    Citation Envoyé par benjgru Voir le message
    Bonjour,

    j'ai fait un petit programme en C q
    Au bout de 585 messages sur le forum, on peut raisonnablement penser que vous connaissez la balise "CODE", non ?


  5. #4
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    Ben non je ne connais pas...il n' y a pas que le forum Informatique ici non ??

  6. #5
    pm42

    Re : encore un petit programme qui ne marche pas (langage C)

    Citation Envoyé par benjgru Voir le message
    Ben non je ne connais pas...il n' y a pas que le forum Informatique ici non ??
    Super réponse qui donne envie d’aider.

  7. A voir en vidéo sur Futura
  8. #6
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    Et bien ne m'aidez pas !! Que voulez-vous que je vous dise...je ne savais pas que c'était un forum pour les geeks ici.

  9. #7
    Ikhar84

    Re : encore un petit programme qui ne marche pas (langage C)

    On ne s'enerve pas ! Ici c'est chez les softeux pas les geeks !!

    Et pour commencer, avec ce code ça donne quoi ?

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        int reponse= 1;          //la déclaration ET l'initialisation
        char lettre = 'a';
    
        do
        {
            printf("Entrez une lettre ? "),
            scanf ("%c", &lettre);
            printf("%d\n",lettre);
    
            //vu que l'on attend que la valeur attendu pour continuer est l'entier 1, autant le mettre en valeur !
            printf ("Voulez vous continuer ? (1 pour continuer, 0 pour arrêter)");
            scanf("%d",&reponse);
        }
        while (reponse==1);
    
        return 0;
    }
    Il sera bien temps de découvrir les problèmes posés par scanf() (et plus tard encore, les formatages et autres sauts de ligne...) plus tard...
    Edit: et bien plus tard, le flush...
    Dernière modification par Ikhar84 ; 20/01/2019 à 22h24.
    J'ai glissé Chef !

  10. Publicité
  11. #8
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    @Ikhar: merci pour ton aide. Effectivement je n'ai pas initialisé la variable "reponse" , par contre je ne savais pas qu'on devait initialiser la variable "char" vu que ça va être une lettre ! (Cela veut dire quoi d'ailleurs initialiser une lettre ?)

    Sinon hélas cela ne marche toujours pas...

    Ci-joint une capture d'écran pour que tu bois bien ce qu'il se passe.
    Images attachées Images attachées

  12. #9
    Jack

    Re : encore un petit programme qui ne marche pas (langage C)

    Il faut vider le buffer clavier. Les solutions doivent se trouver sur la toile.
    Un exemple.

    Sinon, il suffit de consommer un caractère "bidon" qui va faire sauter le saut de ligne (le 10 quoi)

  13. #10
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    Merci mais il semble qu'il y ait une erreur dans le programme "buffer"...ça ne marche pas.

  14. #11
    Ikhar84

    Re : encore un petit programme qui ne marche pas (langage C)

    Oui maintenant on peut parler des flush comme promis. Mais pas là: je suis au boulot !
    J'ai glissé Chef !

  15. #12
    Jack

    Re : encore un petit programme qui ne marche pas (langage C)

    Citation Envoyé par Ikhar84 Voir le message
    Oui maintenant on peut parler des flush comme promis. Mais pas là: je suis au boulot !
    Attention au flush(sdin) qui n'est pas standard, même s'il fonctionne visiblement sous Windows.

  16. #13
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    C'est quoi les flush ? ça a un rapport avec le poker ou les chasses d'eau ?

  17. #14
    Fustigator

    Re : encore un petit programme qui ne marche pas (langage C)

    Citation Envoyé par benjgru Voir le message
    C'est quoi les flush ? ça a un rapport avec le poker ou les chasses d'eau ?
    Dans ce contexte, plus près de la chasse d'eau que du poker.
    Ca veut dire qu'on force la vidange / l'écriture du buffer vers le periph de sortie.

  18. #15
    minushabens

    Re : encore un petit programme qui ne marche pas (langage C)

    une question (ça fait longtemps que je n'ai plus programmé en c) c'est utile d'initialiser la variable reponse ? sachant que le test est fait en fin de boucle et qu'elle est lue avant.

  19. #16
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    OK merci.
    Oui moi non plus je n'ai pas compris à quoi ça sert d'initialiser "reponse"...
    Et "buffer" c'est l'historique des "Ctlr+C" ??

  20. #17
    Jack

    Re : encore un petit programme qui ne marche pas (langage C)

    Essai d'ajouter la ligne
    Code:
    scanf("%c", &lettre);
    juste après la ligne
    Code:
    scanf("%d", &reponse);
    Tu seras surpris ...

  21. #18
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    Ah oui super merci ça marche !!
    Question stupide : pourquoi là ça marche ?? d'autant plus que cette instruction est déjà présente 2 lignes au-dessus, donc elle est en double...

  22. #19
    Jack

    Re : encore un petit programme qui ne marche pas (langage C)

    C'est ce que j'explique en fin de mon message #9.
    Quand tu tapes un caractère et que tu valides en tapant ensuite la touche "Entrée", 2 caractères sont stockés dans le buffer (tampon en français) clavier: le ode ASCII du caractère et 10 qui est le code ASCII du saut de ligne. Le scanf ne consomme que le caractère et le saut de ligne reste dans le buffer. Le 2ème scanf que je t'ai fait ajouter va chercher le caractère de saut de ligne et le sortir du buffer qui est enfin vide.

  23. #20
    benjgru

    Re : encore un petit programme qui ne marche pas (langage C)

    Ah oui ...c'est ardu là, j'aurais jamais pensé à faire ça !

Discussions similaires

  1. problème dans un petit programme (langage C)
    Par benjgru dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 18/01/2019, 15h49
  2. [Programmation] Le programme complet ne marche pas, par contre chaque partie marche
    Par Slaivers dans le forum Électronique
    Réponses: 4
    Dernier message: 26/12/2015, 12h45
  3. Programme en langage C
    Par ProgrammerJr dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 23/10/2014, 13h54
  4. programme I2C en langage C
    Par j---b dans le forum Électronique
    Réponses: 0
    Dernier message: 07/04/2008, 20h47
  5. Réponses: 9
    Dernier message: 16/01/2006, 09h59