Partage
  • Partager sur Facebook
  • Partager sur Twitter

malloc ???

si je copie-colle le code de Mateo, erreur de compile mdr

Sujet résolu
    12 mars 2006 à 11:57:49

    EDIT : Bonjour, ^^



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

    int main(int argc‚ char *argv[])
    {
        long nombreDAmis = 0‚ i = 0;
        long* ageAmis = NULL; // Ce pointeur va servir de tableau après l'appel du malloc

        // On demande le nombre d'amis à l'utilisateur
        printf("Combien d'amis avez–vous ? ");
        scanf("%ld"‚ &nombreDAmis);

        if (nombreDAmis > 0) // Il faut qu'il ait au moins un ami (je le plains un peu sinon :p)
        {
            ageAmis = malloc(nombreDAmis * sizeof(long)); // On alloue de la mémoire pour le tableau
            if (ageAmis == NULL) // On vérifie si l'allocation a marché ou pas
            {
                exit(0); // On arrête tout
            }

            // On demande l'âge des amis un à un
            for (i = 0 ; i < nombreDAmis ; i++)
            {
                printf("Quel age a l'ami numero %ld ? "‚ i + 1);
                scanf("%ld"‚ &ageAmis[i]);
            }

            // On affiche les âges stockés un à un
            printf("\n\nVos amis ont les ages suivants :\n");
            for (i = 0 ; i < nombreDAmis ; i++)
            {
                printf("%ld ans\n"‚ ageAmis[i]);
            }

            // On libère la mémoire allouée avec malloc‚ on n'en a plus besoin
            free(ageAmis);
        }

        return 0;
    }

    A part les #include, c'est le code de Mateo, mais il ne compile pas :( ! En tout cas sous devcpp... Erreur de compilation arrivé au "malloc". mais c'est pas tout, si je remplace mon malloc par un simple
    long ageAmis[nombreDAmis];
    ça fonctionne très bien !!!
    Alors là, je ne cmprends plus rien, quelqu'un peut-il m'aider ?
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2006 à 12:07:46

      Citation : noobducode

      A part les #include, c'est le code de Mateo, mais il ne compile pas :( ! En tout cas sous devcpp... Erreur de compilation arrivé au "malloc".


      Vérifie que tu compiles bien en C et non en C++.
      • L'extension du fichier doit être .c et non .cpp ni .C
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        12 mars 2006 à 12:11:25

        Ahhhhhhhh ouais ! t'as raison mais comment je fais pour le compiler en c ?
        • Partager sur Facebook
        • Partager sur Twitter
          12 mars 2006 à 12:25:41

          Citation : noobducode

          Ahhhhhhhh ouais ! t'as raison mais comment je fais pour le compiler en c ?

          Comme je te l'ai dit, vérifie l'extension de ton fichier. Je suis à peu près sûr que c'est .cpp actuellement.
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            12 mars 2006 à 12:37:06

            Citation : -ed-

            Comme je te l'ai dit, vérifie l'extension de ton fichier. Je suis à peu près sûr que c'est .cpp actuellement.



            Oui, c'est du .cpp mais si je mets en .c, il y a plein d'erreurs de compilation ! Par exemple, je suis obligé de mettre "int main()" sans rien dans le main sinon, erreur. J'en ai une dès "long nombreDAmis = 0, i = 0;" que je ne sais pas comment résoudre, en gros il y en a une a chaque ligne ^^ .
            • Partager sur Facebook
            • Partager sur Twitter
              12 mars 2006 à 12:39:34

              Citation : noobducode

              Oui, c'est du .cpp mais si je mets en .c, il y a plein d'erreurs de compilation !


              Quelle erreur ?
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                12 mars 2006 à 12:43:29

                Erreur si je mets des paramètres dans le main, erreur à la définition de 2 long, et je ne suis pas allé plus loin, mais sur deux lignes, il y a 2 erreurs ! :lol:
                • Partager sur Facebook
                • Partager sur Twitter
                  12 mars 2006 à 13:04:17

                  Citation : noobducode

                  Erreur si je mets des paramètres dans le main, erreur à la définition de 2 long, et je ne suis pas allé plus loin, mais sur deux lignes, il y a 2 erreurs ! :lol:


                  Si tu ne dis pas quelle erreur, on ne va pas avancer. Que dit exactement le compilateur ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !
                    12 mars 2006 à 13:08:29

                    stray '\130' in program pour long nombreDAmis = 0, i = 0;
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 mars 2006 à 13:11:17

                      Ca c'est un problème avec le copier-coller a partir du SdZ, certains cractères sont remplacés par des caractères invalides (nottament la ',')
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 mars 2006 à 13:13:35

                        La virgule sert de carractère de séparation, et est valide, non ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 mars 2006 à 13:19:24

                          Je confirme. De plus, les arguments de main pour ton programme on s'en fout un peu...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 mars 2006 à 13:22:14

                            non, il faut que tu remplaces les virgules du SDZ par tes virgules à toi.
                            Tu supprimes la virgule, et tu en remets une autre à la place.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 mars 2006 à 13:23:38

                              Ok, j'essaye, merci tout le monde ! ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 mars 2006 à 13:25:30

                                Citation : noobducode

                                La virgule sert de carractère de séparation, et est valide, non ?


                                Sur ce forum il existe 2 virgules :
                                • la virgule ASCII : , (code 44). C'est celle-ci qui est valide
                                • la virgule des zone 'formattées' du forum : , (code 130). Celle-ci provoque des erreurs de compilation
                                Quand tu récupères du code par copier-collé du FdZ, il faut faire un remplacement dans ton code.

                                Idem avec les caractères - (code 150)

                                Ce problème est connu et signalé. Souhaitons qu'il soit corrigé un jour, car il ne facilite pas le travail...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  12 mars 2006 à 13:27:05

                                  ouuuuuuuuuuuaiiiiiiiiiis !!! ça marche et j'ai enfin compris le problème des virgules ^^ merci !
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  malloc ???

                                  × 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