Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tester une fonction void

Sujet résolu
Anonyme
    20 février 2020 à 15:24:50

    Bien le rebonjour ,

    encore moi :-°

    Alors voila les deux fonctions que je viens d'écrire, je les test dans un main les valeurs sorties sont bonnes mais 3 warnings s'affichent pourriez vous m'aidez à les déchiffrer pour que je puisse me corriger ?

    void permute(int *a, int *b) {
    int e = *a ; //permutation entre valeur de a et celle de b
    *a = *b ;
    *b = e ;
    printf("%d,%d\n",*a,*b) ;
    }
    
    void permuteCirculaire(int *a, int *b, int *c) {
      permute(a,b) ; // permutation circulaire entre a , b et c
      permute(b,c) ;
      printf("%d, %d, %d\n",a,b,c) ;
    }

    voici les messages

     warning: format specifies type 'int' but the
          argument has type 'int *' [-Wformat]
      printf("%d, %d, %d\n",a,b,c) ;
              ~~            ^
    main.c:101:27: warning: format specifies type 'int' but the
          argument has type 'int *' [-Wformat]
      printf("%d, %d, %d\n",a,b,c) ;
                  ~~          ^
    main.c:101:29: warning: format specifies type 'int' but the
          argument has type 'int *' [-Wformat]
      printf("%d, %d, %d\n",a,b,c) ;





    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2020 à 16:05:43

      bonjour, tu as tout simplement oublié de mettre des * dans ton prinf de permuteCirculaire : 
      void permute(int *a, int *b) {
      int e = *a ; //permutation entre valeur de a et celle de b
      *a = *b ;
      *b = e ;
      printf("%d,%d\n",*a,*b) ;
      }
      
      void permuteCirculaire(int *a, int *b, int *c) {
        permute(a,b) ; // permutation circulaire entre a , b et c
        permute(b,c) ;
        printf("%d, %d, %d\n",*a,*b,*c) ;
      }
      
      int main(void)
      {
          int a = 0, b = 12, c = 42;
          permuteCirculaire(&a, &b, &c);
          return 0;
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        21 février 2020 à 20:24:36

        Si a, b, c sont des entiers, je trouve piégeux d'appeler a, b, c les paramètres des fonctions destinés à recevoir des pointeurs sur ces entiers. C'est un coup à ne plus savoir si on doit mettre une *, un & ou rien du tout... En tout cas quand on n'est pas à l'aise avec les pointeurs comme moi.

        Ce que j'aime bien faire, c'est donner aux pointeurs des noms qui indiquent qu'il s'agit de pointeurs. Là, par exemple, ça donnerait :

        void permuteCirculaire(int* pta, int* ptb, int* ptc) {
          permute(pta,ptb) ;
          permute(ptb,ptc) ;
          printf("%d, %d, %d\n",*pta,*ptb,*ptc) ; // là je vois bien que pour avoir un entier, je dois mettre *
        }
         
        int main(void)
        {
            int a = 0, b = 12, c = 42;
            permuteCirculaire(&a, &b, &c);
            return 0;
        }



        -
        Edité par robun 21 février 2020 à 20:26:15

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 février 2020 à 9:10:53

          aureliencabiac a écrit:

          bonjour, tu as tout simplement oublié de mettre des * dans ton prinf de permuteCirculaire : 

          void permute(int *a, int *b) {
          int e = *a ; //permutation entre valeur de a et celle de b
          *a = *b ;
          *b = e ;
          printf("%d,%d\n",*a,*b) ;
          }
          
          void permuteCirculaire(int *a, int *b, int *c) {
            permute(a,b) ; // permutation circulaire entre a , b et c
            permute(b,c) ;
            printf("%d, %d, %d\n",*a,*b,*c) ;
          }
          
          int main(void)
          {
              int a = 0, b = 12, c = 42;
              permuteCirculaire(&a, &b, &c);
              return 0;
          }
          

          Oh merci ! Je ne l'avais pas vue cette erreur-là 


          robun a écrit:

          Si a, b, c sont des entiers, je trouve piégeux d'appeler a, b, c les paramètres des fonctions destinés à recevoir des pointeurs sur ces entiers. C'est un coup à ne plus savoir si on doit mettre une *, un & ou rien du tout... En tout cas quand on n'est pas à l'aise avec les pointeurs comme moi.

          Ce que j'aime bien faire, c'est donner aux pointeurs des noms qui indiquent qu'il s'agit de pointeurs. Là, par exemple, ça donnerait :

          void permuteCirculaire(int* pta, int* ptb, int* ptc) {
            permute(pta,ptb) ;
            permute(ptb,ptc) ;
            printf("%d, %d, %d\n",*pta,*ptb,*ptc) ; // là je vois bien que pour avoir un entier, je dois mettre *
          }
           
          int main(void)
          {
              int a = 0, b = 12, c = 42;
              permuteCirculaire(&a, &b, &c);
              return 0;
          }



          -
          Edité par robun 21 février 2020 à 20:26:15

           Merci pour ta remarque, tu as totalement raison ! Il est plus judicieux de les nommer différemment 



          -
          Edité par Anonyme 23 février 2020 à 9:17:18

          • Partager sur Facebook
          • Partager sur Twitter

          Tester une fonction void

          × 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