Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de compilation

"error: incompatible types in assignment"

Sujet résolu
    13 avril 2006 à 21:03:37

    Salut tout le monde !!!

    Pour les connaisseurs, je fais l'exercice 1-19 du K&R. Pour ceux qui connaissent pas, cet exercice demande d'inverser les caractères d'une chaîne de caractère nécessitant une fonction "inverser". Pour l'instant je teste juste l'appel de la fonction "inverser". Mais j'obtiens une erreur (cf. sous-titre du topic). Voici le code :

    #include <stdio.h>

    #define MAX 1000

    char inverser(char phrase[MAX]);

    main()
    {
        int c, i;
        char phrase[MAX], inversee[MAX];

        for (i = 0; i < MAX && (c = getchar()) != EOF; ++i) {
            phrase[i] = c;
        }

        phrase[i] = '\0';

        inversee = inverser(phrase);

        printf("ENTREE pour quitter :");
        getchar();

        return 0;
    }

    char inverser(char phrase[MAX])
    {
        printf("TEST");

        return 0;
    }


    L'erreur apparaît dans la ligne :
    inversee = inverser(phrase);


    Je ne comprends pas l'erreur.

    Si quelqu'un pouvait m'expliquer !!!

    Merci d'avance !!!
    • Partager sur Facebook
    • Partager sur Twitter
      13 avril 2006 à 21:05:10

      inversee est déclaré comme un tableau de char, et inverser renvoie un char, donc ça peux pas coller.
      déclare inversee comme un char et ça va marcher.
      Mais bon, pour ta fonction inverser, je pense qu'il vaut mieux inverser directement la chaine à inverser, et pas la renvoyer (si c'est pas trop confus :D).
      • Partager sur Facebook
      • Partager sur Twitter
        13 avril 2006 à 21:06:33

        Comment je peux corriger cela alors ???
        • Partager sur Facebook
        • Partager sur Twitter
          13 avril 2006 à 21:17:26

          char* comme type de retour. De plus, dans ton main, fais :

          for (i = 0; i < MAX - 1 && (c = getchar()) != EOF; ++i)


          Sinon, tu supprime le dernier caractère entré par l'utilisateur et d'un et de deux on ne peut pas s'arrêter avant MAX - 1.

          Et... si tu en est à cet exo, tu as vu que les accolades sont facultatives lorsqu'il n'y a qu'une instruction. ;)

          ++
          • Partager sur Facebook
          • Partager sur Twitter
            13 avril 2006 à 21:27:25

            Merci pour le char* et le MAX - 1. Par rapport aux accolades, chez moi, c'est une habitude, j'aime bien mettre les accolades même quand il n'y a qu'une seule instruction o_O !!!

            EDIT: heu j'ai mis char* comme type de retour et j'ai toujours l'erreur :colere: ! T'es sûr de ce que tu dis ???
            • Partager sur Facebook
            • Partager sur Twitter
              13 avril 2006 à 21:33:03

              Oui seulement il faut pas que tu renvoie 0 après :p

              Tu dois renvoyer un pointeur ; soit ici : return phrase; ;)
              • Partager sur Facebook
              • Partager sur Twitter
                14 avril 2006 à 8:37:10

                Citation : nzabee

                Pour les connaisseurs, je fais l'exercice 1-19 du K&R. Pour ceux qui connaissent pas, cet exercice demande d'inverser les caractères d'une chaîne de caractère nécessitant une fonction "inverser". Pour l'instant je teste juste l'appel de la fonction "inverser". Mais j'obtiens une erreur (cf. sous-titre du topic). Voici le code :


                Tu es mal parti. La fonction 'inverser' ne doit rien retourner. Elle doit agir sur le tableau dont on a passé l'adresse du premier élément en paramètre, de façon à ce que si avant l'appel, il y avait, par exemple "hello", il y ait "olleh" après.

                Par exemple :

                int main (void)
                {
                   char s[] = "hello";
                   puts(s);
                   inverser(s);
                   puts(s);

                   return 0;
                }


                Secret (cliquez pour afficher)
                http://users.powernet.co.uk/eton/kandr2/krx119.html
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  14 avril 2006 à 9:13:57

                  En fait je crois que je vais revoir tout le code, ça vaudra mieux ^^ !!! Merci de vos réponses tout de même !
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Erreur de compilation

                  × 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