Partage
  • Partager sur Facebook
  • Partager sur Twitter

qu'est-ce qu'un argument?

    27 juin 2007 à 20:56:45

    bonjours!

    je suis tout nouveau ici et je commence à apprendre le languageC grace au cour de m@theo21

    sur le cour (j'en suis qu'au debut) on nous apprend à faire des additions (super!) et nous dit d'essayer de faire une mini calculatrice, ce que j'ai fait...
    mais ca marche pas!!!

    j'ai pas mal cherché et j'ai comparé avec l'exemple proposé dans le cour mais je ne comprend pas pourquoi ca ne marche pas.
    pouvez vous m'aider?

    lorce que j'essais de compiler ca me renvois ces erreurs là


    : error C2198: 'sprintf' : pas assez d'arguments pour un appel
    : error C2198: 'sprintf' : pas assez d'arguments pour un appel
    : warning C4047: 'fonction' : 'const char *' diffère de 'long' dans les niveaux d'indirection
    : warning C4024: 'sprintf' : types différents pour le paramètre formel et réel 2

    le probleme c'est que je ne sait pas ce que c'est qu'un "argument"

    voici le code que j'ai ecrit. (moi tout seul comme un grand!)


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

    int main(int argc, char *argv[])
    {
    long resultat = 0, nombre1 = 0, nombre2 = 0;
    sprintf(" entrez un nombre \n " ) ;
    scanf(" %ld ", &nombre1);
    sprintf(" \n entrez un nombre a ajouter au premier ") ;
    scanf("%ld\n", &nombre2) ;
    resultat = nombre1 + nombre2;
    sprintf(" %ld + %ld = %ld ", nombre1, nombre2, resultat) ;
    system("PAUSE");     

      return 0;
    }


    j'aimerais comprendre ce qui cloche avant de passer à la suite du cour.

    help svp!
    • Partager sur Facebook
    • Partager sur Twitter
      27 juin 2007 à 21:20:25

      Déjà c'est printf qu'il faut mettre et pas sprintf. Ensuite vire les \n de tes scanf. Ensuite évite des mettre des espaces quand tu fais printf(" Exemple"); ça influe sur ta console :

         Exemple


      un printf("Exemple"); donne :

      Exemple


      Ton code corrigé :

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

      int main(int argc, char *argv[])
      {
      long resultat = 0, nombre1 = 0, nombre2 = 0;
      printf("Entrez un nombre : ") ;
      scanf("%ld", &nombre1);
      printf("\nEntrez un nombre a ajouter au premier :  ") ;
      scanf("%ld", &nombre2) ;
      resultat = nombre1 + nombre2;
      printf("\n%ld + %ld = %ld\n\n", nombre1, nombre2, resultat) ;
      system("PAUSE");     
      return 0;
      }


      Code corrigé qui donne :

      Entrez un nombre : 50

      Entrez un nombre a ajouter au premier : 50

      50 + 50 = 100

      Appuyez sur une touche pour continuer...
      • Partager sur Facebook
      • Partager sur Twitter
        27 juin 2007 à 21:20:35

        Un argument équivaut à un paramètre d'une fonction.

        Ici, tu passes à sprintf un seul argument (le format), alors qu'elle en attend deux, le premier étant la chaîne de caractère qui va recevoir le format formaté (j'espère que je me fais comprendre ^^ ). Eh oui, sprintf() n'affiche rien à l'écran, elle ne dirige pas la chaîne vers le flux standard stdout, correspondant à l'écran (sans redirection).

        La fonction que tu cherches à utiliser est en fait printf(), sans s.

        Correction :

        #include <stdio.h>

        int main(void)
        {
            long nombre1 = 0, nombre2 = 0;

            printf(" entrez un nombre \n " ) ;
            scanf("%ld", &nombre1);

            printf(" \n entrez un nombre a ajouter au premier ") ;
            scanf("%ld", &nombre2) ;

            printf(" %ld + %ld = %ld ", nombre1, nombre2, nombre1+nombre2) ;

            getchar();   

            return 0;
        }
        (Quelques modifications, dont la présence de '\n' dans le format de scanf().)

        Attention toutefois à rentrer des bonnes valeurs pour scanf(), sinon en résultera une belle boucle infinie... c'est pour ça que scanf(), "c'est mal", si on ne sait pas l'utiliser correctement.

        Edit: Si il veut mettre des espaces... on va pas l'en empêcher :-°
        • Partager sur Facebook
        • Partager sur Twitter
          27 juin 2007 à 21:53:52

          merci pour cette reponse rapide!
          j'ai melangé scanf printf et ca à donné sprintf. je melange un peu tout pour le moment.

          euh kidpaddle2 j'ai pas tout compris de ce que tu m'à dit mais je pense que je comprendrais surement apres avoir fini le cour^^

          ps: les espaces c'est quand j'ai pensé que c'etait peut etre à cause de ca que ca marchait pas. donc j'en ai enlevé et rajouté pour voir ce qui changé.

          encore merci pour cette reponse rapide
          • Partager sur Facebook
          • Partager sur Twitter
            27 juin 2007 à 22:38:05

            Citation : kidpaddle2


            Un argument équivaut à un paramètre d'une fonction.



            J'avoue que ce genre de confusion m'a beaucoup gêné quand j'ai commencé à apprendre le C dans les livres, lesquels sont très jargonneux. Il semblerait établi que les paramètres soient plutôt les variables qui apparaissent entre parenthèses lors de la déclaration d'une fonction tandis que les arguments seraient plutôt les expressions apparaissant entre parenthèses lors de l'appel d'une fonction. En tout cas, c'est ce qui est expliqué dans le K&R (alias Kernighan et Ritchie) ainsi que dans la norme du langage C et aussi dans K.N. King, auteur connu d'un ouvrage acceptable sur le C. [Je n'ai pas trouvé de définition dans les ouvrages ou documents suivants : Braquelaire, Delannoy (sa référence de 920 pages !), Harbison, Cassagne ce qui est significatif de la qualité didactique de ces ouvrages.]

            EDIT orthographe, lien
            • Partager sur Facebook
            • Partager sur Twitter

            qu'est-ce qu'un argument?

            × 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