Partage
  • Partager sur Facebook
  • Partager sur Twitter

l'allocatin dynamique

je ne comprend pas pourquoi ça compile mal

    30 août 2021 à 4:43:29

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char* argv[])
    {
        int* memoireAllouer=  NULL;// on crée un pointeur sur int
        memoireAllouer= malloc(sizeof(int));/* la fonction malloc
        inscrit dans notre pointeur l'adresse qui a été reservé*/
    
        //On test notre pointeur 
        if (memoireAllouer != NULL)//si l'allocation fonctionne
        {
            printf("Donnez nous votre age s'il vous plait ");
            scanf("%d", memoireAllouer);
            printf("vous avez %d ans.\n", *memoireAllouer);
            free(memoireAllouer);
        }
        // SINON on continue notre proramme 
        else
        {
            exit(0); //on arréte le programme
        }
    
    
    
        //creer un tableau avec l'allocation dynamique 
        int nombredamis= 0, i=0 ;
        int* ageamis = NULL; /* ce pointeur va servir de tableau
        apres lappel de malloc*/
        //on demande le nombre damis a l'utilisateur
        printf("combien avez vous damis ? \n");
        scanf("%d", nombredamis);
    
        if (nombredamis > 0)
        {
            ageamis= malloc(nombredamis * sizeof(int));/*on alloue
            de la memoire pour le tableau*/
            if (ageamis != NULL)
            {
                //on demande l'age en parcourant le tableau
                for (i=0; i<nombredamis; i++)
                {
                    printf("Qeule age a lami numero %d ", i+1);
                    scanf("%d", &ageamis[i]);
                }
                //on affiche les ages stockées un a un 
                for(i=0; i<nombredamis; i++)
                {
                    printf("[%d ans ]", ageamis);
                }
            }
            else 
            {
                exit(0);// on arrete tout 
            }
        free(ageamis);
        }
    
    
    return 0;
    }
    /*
    ---FONCTIONS A CONNAITRE DANS CE CHAPITRE---
    malloc : (<<Memory ALLOCation>>, c'est a dire <<Allocation 
        de mémoire>>): demande a l'OS la permission d'utilser 
            de la mémoire
    free : (<<Libérer>>): permet d'indiquer a l'OS que l'on n'a 
        plus besoin de la mémoire qu'on avait demandée. La place
            en mémoire est libéree, un autre programme peut 
                maintenant s'en servir au besoin
    */
    je ne vois vraiment pas ou j'ai fais l'erreur 
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2021 à 4:56:59

      L'erreur est ici:
          scanf("%d", nombredamis);
      tu as oublié le '&' devant la variable.
       

      t

      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        30 août 2021 à 5:43:55

        PierrotLeFou a écrit:

        L'erreur est ici:
            scanf("%d", nombredamis);
        tu as oublié le '&' devant la variable.
         

        t


        un grand merci
        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2021 à 10:16:56

          Active les Warnings, le compilateur t'indiquera la ligne et le type d'erreur que tu as fait.

          Il y en a une autre ligne 49 : ...\main.c|49|warning: format '%d' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat=]|

          • Partager sur Facebook
          • Partager sur Twitter
          ...
            30 août 2021 à 15:16:08

            J'utilise habituellement ce qui suit:
            gcc -o machin machin.c -Wall -Wextra -Werror -Wunused -Fanalyzer
            P.S. Je ne suis pas dans un IDE comme Code::Blocks ou Visual Studio
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              30 août 2021 à 18:36:19

              au cas où … c'est -fanalyzer avec un petit f, il s'agit d'une analyse statique pouvant produire de faux positifs ce qui n'est pas cool de pair avec -Werror.

              -g c'est pas mal non plus quand on débugue.

              • Partager sur Facebook
              • Partager sur Twitter
                30 août 2021 à 18:46:02

                Noté et corrigé ...

                -
                Edité par PierrotLeFou 30 août 2021 à 18:59:13

                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                l'allocatin dynamique

                × 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