IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

l'allocation memoire array


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut l'allocation memoire array
    bonsoir ,vous pouvez me dire pourquoi l'allocation de memoire echoue ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include<stdlib.h>
    #include<stdio.h>
    #define max 10;
     
     
     
    int main() 
    {
      struct complexe 
      { 
        double re;
        double im;
      };
      int i=0;
      struct complexe *c;
      //   struct  complexe tab[10];
      struct complexe tab[10];
     
      c=calloc(11,sizeof(struct complexe));
     
      if(c==NULL);
      {
      fprintf(stderr,"allocation impossible\n");
      exit(EXIT_FAILURE);
      }
      while(i<10)
        {
          tab[i].re=i*2;
          tab[i].im=i*3;
          i++;
        }
      for(i=0;i<10;i++)
        {
          printf("%lf  %lf\n",tab[i],tab[i]);
        }
    }

  2. #2
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Il sort d'où le '11'. Tu devrais relire le man de calloc

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut
    merci mais c'est pas sa le probleme c'est 10 en place de 11 c'est le numero des champs du tableaux , mais le probleme existe encore ????

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Petite faute de débutant, tu vas t'en vouloir
    Code ton code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      if(c==NULL);
      {
      fprintf(stderr,"allocation impossible\n");
      exit(EXIT_FAILURE);
      }
    Le calloc ne foire pas et si il foire, il exécute le traitement du if, c'est à dire l'instruction ";" (si si, regarde un peu mieux)
    donc après, on exécute le bloc suivant c'est à dire, le printf("erreur");
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    j'ajouterai que :
    • main retourne un int
    • il faut libérer les cases allouées à l'aide d'un free
    • ton printf ne marchera pas, ceci est juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%f  %f\n",tab[i].re,tab[i].im);

  6. #6
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    merci mais c'est pas sa le probleme c'est 10 en place de 11 c'est le numero des champs du tableaux , mais le probleme existe encore ????
    Oups autant pour moi, j'ai halluciné sur quelque chose

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miomikio Voir le message
    bonsoir ,vous pouvez me dire pourquoi l'allocation de memoire echoue ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    -------------- Build: Debug in hello ---------------
     
    Compiling: main.c
    Linking console executable: bin\Debug\hello.exe
    C:\dev\hello\main.c:8: warning: function declaration isn't a prototype
    C:\dev\hello\main.c: In function `main':
    C:\dev\hello\main.c:21: warning: empty body in an if-statement
    C:\dev\hello\main.c:34: warning: double format, complexe arg (arg 2)
    C:\dev\hello\main.c:34: warning: double format, complexe arg (arg 3)
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    C:\dev\hello\main.c:26: warning: will never be executed
    Output size is 18.89 KB
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 14 warnings
    Il y a un ';' en trop après le if...
    Corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #include<stdlib.h>
    #include<stdio.h>
     
    int main (void)
    {
       struct complexe
       {
          double re;
          double im;
       };
       int i = 0;
       int n = 10;
     
       struct complexe *c = malloc (n * sizeof *c);
     
       if (c == NULL)
       {
          fprintf (stderr, "allocation impossible\n");
          exit (EXIT_FAILURE);
       }
     
       for (i = 0; i < n; i++)
       {
          c[i].re = i * 2;
          c[i].im = i * 3;
       }
     
       for (i = 0; i < n; i++)
       {
          printf ("%8.2f %8.2f\n", c[i].re, c[i].im);
       }
     
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        0.00     0.00
        2.00     3.00
        4.00     6.00
        6.00     9.00
        8.00    12.00
       10.00    15.00
       12.00    18.00
       14.00    21.00
       16.00    24.00
       18.00    27.00
     
    Process returned 0 (0x0)   execution time : 0.031 s
    Press any key to continue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Allocation memoire et management de la memoire
    Par micamused dans le forum C++
    Réponses: 9
    Dernier message: 16/11/2005, 09h07
  2. probleme avec les allocations memoires
    Par david35 dans le forum C
    Réponses: 5
    Dernier message: 21/10/2005, 11h49
  3. allocation memoire
    Par suckthewindow dans le forum C++
    Réponses: 2
    Dernier message: 18/10/2005, 14h57
  4. Réponses: 13
    Dernier message: 05/01/2004, 19h00
  5. Allocation memoire Limité avec TurboC
    Par sebastien51 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 15/10/2003, 23h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo