Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment faire pour ne pas faire planter les scanf

aider moi svp

Sujet résolu
    3 janvier 2006 à 19:34:08

    Je voudrazis savoir comment on fait pour ne pas faire planter la console quand on tape des lettre svp

    merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2006 à 19:36:30

      bé montre nous ton code et on pourra t'aider :p
      • Partager sur Facebook
      • Partager sur Twitter
        3 janvier 2006 à 19:44:55

        lol j'aime bien y'a marqué " hacker " dans ton avatar et tu viens demander comment eviter le bug de scanf :D

        nan euh pour scanf tu peux par exemple faire :

        scanf("%c, %ld" , &charactère , &chiffre);


        ca remplira soit un soit un charactère


        EDIT : bah non en fait ... ca remplit que charactère je crois :p
        bah euh je sais pas je crois que ca manie les chaines de charactères donc bon voila quoi : o
        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2006 à 20:01:20

          oui mais les hacker pour ton information ne font que visiter les reseau et ne fond pas de mal au autre ordinateur contrairement au lamerz qui s'amuse a formater les PC a distance.(moi je visite t'inquète pas ;) )

          bon pour en revenir au sujet je ne peut pas vous passez mon code car il fait 605 ligne et qu'il y a aucun commentaire donc vous n'allez rien comprendre (c'est une calculatrice qui a pour fonction):

          * additon
          * soustraction
          * multiplication
          * division
          * racine carrer
          * les convertion franc eur et euro franc
          * la trigonometrie (sinus, cosinus, tangente, anti-sinus, anti-cosinus, anti-tangent)
          * les valeur absolus
          * les nombre inverse

          donc tu comprend la longueur du code :p
          • Partager sur Facebook
          • Partager sur Twitter
            3 janvier 2006 à 20:15:09

            slt @ tous ! je suis nouveau et j'apprend le C++ (j'en suis au 1er TP) bah moi j'ai le même problème mais en moins avancé : c'est toujours une calculette mais qui ne fait que addition, soustraction, multiplication et division. désolé de faire un sujet dans un autre mais il y a la règle "ne demandez pas quelque chose qui a déjà été demandé" enfin dans ce sens quoi :p !
            voilà mon code merci beaucoup d'avance (si vous m'aidez :-)


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

            int main(int argc, char *argv[])
            {
                long operationAEffectuer = 0, nombre1Addition = 0, nombre2Addition = 0, nombre1Soustraction = 0, nombre2Soustraction = 0, nombre1Multiplication = 0, nombre2Multiplication = 0, nombre1Division = 0, nombre2Division = 0, resultatAddition = 0, resultatSoustraction = 0, resultatMultiplication = 0, resultatDivision = 0 ;
              printf("choisissez ce que vous voulez effectuer\n1. addition\n2. soustraction\n3. multiplication\n4. division\n\n") ;
              scanf("%ld", operationAEffectuer) ;
              switch (operationAEffectuer)
                     {
                     case 1:
                          printf("addition. veuillez entrer le premier nombre.\n") ;
                          scanf("%ld", nombre1Addition) ;
                          printf("\nveuillez entrer le second nombre.\n") ;
                          scanf("%ld", nombre2Addition) ;
                          resultatAddition = nombre1Addition + nombre2Addition ;
                          printf("%ld + %ld = %ld\n", nombre1Addition, nombre2Addition, resultatAddition) ;
                          break;
                     case 2:
                          printf("soustraction. veuillez entrer le premier nombre.\n") ;
                          scanf("%ld", nombre1Soustraction) ;
                          printf("\nveuillez entrer le second nombre.\n") ;
                          scanf("%ld", nombre2Soustraction) ;
                          resultatSoustraction = nombre1Soustraction - nombre2Soustraction ;
                          printf("%ld - %ld = %ld\n", nombre1Soustraction, nombre2Soustraction, resultatSoustraction) ;
                          break;
                     case 3:
                          printf("multiplication. veuillez entrer le premier nombre.\n") ;
                          scanf("%ld", nombre1Multiplication) ;
                          printf("\nveuillez entrer le second nombre.\n") ;
                          scanf("%ld", nombre2Multiplication) ;
                          resultatMultiplication = nombre1Multiplication * nombre2Multiplication ;
                          printf("%ld X %ld = %ld\n", nombre1Multiplication, nombre2Multiplication, resultatMultiplication) ;
                          break ;
                     case 4:
                          printf("division. veuillez entrer le nombre à diviser.\n") ;
                          scanf("%ld", nombre1Division) ;
                          printf("\nveuillez entrer le nombre diviseur.\n") ;
                          scanf("%ld", nombre2Division) ;
                          resultatDivision = nombre1Division, nombre2Division ;
                          printf("%ld : %ld = %ld\n", nombre1Division, nombre2Division, resultatDivision) ;
                          break ;
                     default:
                             printf("vous n'avez pas choisi une operation correcte.") ;
                             break;
                          }
                         
                          printf("\n\noperation effectuee.\n\n") ;
                         
              system("PAUSE");     
            }






            en fait le problème c'est que lorsqu'on entre 1,2,3 ou 4 dans le choix de l'opération à effectuer, quand on met "entrée" pour valider le choix j'ai l'impression que ça saute tout le code, donc que le programme s'arrête...
            ce qui est sûr c'est qu'il s'arrête :p

            voilà merci encore !
            • Partager sur Facebook
            • Partager sur Twitter
              3 janvier 2006 à 20:17:58

              tout ça c'est du c...
              • Partager sur Facebook
              • Partager sur Twitter
                3 janvier 2006 à 20:18:50

                scanf("%ld", &nombre1Addition) ;

                Il faut TOUJOURS penser au & quand tu utilise scanf

                EDIT :
                D'ailleurs, la ligne que je te cite n'est pas la seule, mais je te laisse corriger tout ces "&" manquants.

                Citation : fock

                tout ça c'est du c...


                >> Et alors ? tu peut faire une source en .cpp en n'utilisant que des fonctions C, ton compilateur marchera quand même, ça change pas grand-chose...(même si pour le principe, c'est pas beau, je te l'accorde).
                • Partager sur Facebook
                • Partager sur Twitter
                  3 janvier 2006 à 20:19:02

                  ben...
                  oui
                  désolé je n'en suis qu'au début je ne connait pas encore le C++... enfin désolé quoi
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    4 janvier 2006 à 13:33:18

                    Citation : mageblanc

                    oui mais les hacker pour ton information ne font que visiter les reseau et ne fond pas de mal au autre ordinateur contrairement au lamerz qui s'amuse a formater les PC a distance.(moi je visite t'inquète pas ;) )

                    bon pour en revenir au sujet je ne peut pas vous passez mon code car il fait 605 ligne et qu'il y a aucun commentaire donc vous n'allez rien comprendre (c'est une calculatrice qui a pour fonction):

                    * additon
                    * soustraction
                    * multiplication
                    * division
                    * racine carrer
                    * les convertion franc eur et euro franc
                    * la trigonometrie (sinus, cosinus, tangente, anti-sinus, anti-cosinus, anti-tangent)
                    * les valeur absolus
                    * les nombre inverse

                    donc tu comprend la longueur du code :p


                    Pour répondre à ta question: créé une fonction cleanScan
                    void cleanScan(char scan)
                    {
                        do
                        {
                            scan = getchar();
                        } while (scan != '\n' && scan != EOF);
                    }

                    après après chaque scanf tu met "cleanScan(ton_scanf);"
                    Exemple:
                    scanf("%ld", &tonScan);
                    cleansScan(tonScan);

                    (regarde ICI, je trouve qu'l y a quelques similitudes... :colere: )
                    • Partager sur Facebook
                    • Partager sur Twitter

                    comment faire pour ne pas faire planter les scanf

                    × 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