Partage
  • Partager sur Facebook
  • Partager sur Twitter

scanf et printf

Tout ne s'affiche pas comme il faut

Anonyme
    21 décembre 2006 à 22:45:07

    Bonjour à tous!

    Comment va?

    Je suis un petit nouveau ZérOs et j'espère grimper petit à petit.

    J'ai lut attentivement les tutos officiels sur le C# et je viens de terminer la section avancé sur les chaînes de caractères. J'ai fait quelques tests personnels avec d'anciens exercices que j'avais créer en python.

    J'ai tenté d'en faire un, tout simple qui consiste à demander à l'utilisateur d'entrer un caractère puis un second qui va remplacer le premier dans une chaîne de caractères.


    J'ai essayé le code suivant (tronqué pour simplifier la lecture) ;):

    #include <stdio.h>
    #include <stdlib.h>

    int main() {
        char carac1‚ carac2;
       
        //Détection du premier caractère
        printf("Inscrivez le premier caractere: ");
        scanf("%c\n\n"‚ &carac1);
       
        //Détection du second caractère
        printf("Inscriez le second caractere: ");
        scanf("%c\n\n"‚ &carac2);
       
        //Affichage du résultat
        printf("1) %c\n2) %c\n"‚ carac1‚ carac2);
       
        system("PAUSE");
    }


    Malheureusement, si vous testez rapidement ce code, vous verrez que le programme n'affiche pas le seconde texte lorsque j'ai entré le premier caractère puis validé avec Enter, il va d'abort placer une ligne vide et je dois retaper Enter pour la suite :-(


    Quelqu'un aurait une solution à me proposer?

    Merci beaucoup :D


    P.S. j'utilise Dev-C++ version 4.9.9.1
    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2006 à 23:05:19

      Salut,
      pourquoi tu met deux fois "\n" dans tes scanf?
      A mon avis le problème viens de la.
      Sinon il y a un tuto spécial pour la saisie des caractère en c dans la section tuto des zeros.

      PS: c'est du C et pas du C#. Ces deux languages sont différents.

      Re PS : je ne sais pas si ta déclaration du main est valide en C.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        21 décembre 2006 à 23:12:55

        Alors les \n, c'est pour espacer les textes et séparer les blocs, c'est plus lisible dans la console.
        Sinon je les ai déplacer dans les printf, mais ça ne change rien :-(


        Ensuite pour la décaration du main, j'ai ajouté les arguments, mais ça a toujours fonctionné sans et en les ajoutant, pas de changements.

        Sinon j'ai déjà lut le tuto sur les caractères, il est possible que j'aie oublié quelque chose, mais je ne voit pas quoi, car j'avais déjà relu ce tuto.


        Sinon désolé, c'est un reflexe le C# ;)

        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2006 à 23:42:41

          Citation : Attila_le_1

          J'ai lut attentivement les tutos officiels sur le C#

          WTF ? Y'a un nouveau tuto et je ne suis même pas au courant ?

          Citation : Pas de titre

          scanf("%c\n\n"‚ &carac1);

          scanf() n'est pas une fonction de débutant.

          http://xrenault.developpez.com/tutoriels/c/scanf/

          alternatives :

          http://www.siteduzero.com/tuto-3-11181-1-c-realiser-des-saisies-securisees-grace-a-fgets.html



          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            22 décembre 2006 à 0:27:52

            Pour t'explique rapidement "l'idée" de ton problème , je me permet de citer Mateo :

            Citation : Mateo21

            Que s'est-il passé ?


            En fait, quand vous rentrez du texte en console, tout ce que vous tapez est stocké quelque part en mémoire, y compris l'appui sur la touche Entrée (\n).

            Ainsi, la première fois que vous rentrez une lettre (par exemple A) puis que vous tapez Entrée, c'est la lettre A qui est renvoyée par le scanf. Mais la seconde fois, scanf renvoie le \n correspondant à la touche "Entrée" que vous aviez tapée auparavant !



            Voilà, ton problème était là.
            Maintenant, tu peux aller voir les liens de -ed-, qui vont t'expliquer comment palier ce problème.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme

            scanf et printf

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown