Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
899 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Question sur l'allocation dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Question sur l'allocation dynamique

n°1517118
Lord Bab's
Posté le 20-02-2007 à 15:55:20  profilanswer
 

Bonjour à tous.
 
Je fais un petit programme en langage C et à un moment j'ai besoin de réserver de la mémoire pour un tableau Balises, de longueur nbBalises (déterminé au début du programme) qui contient des chaines de caractères de longueur fixe (15 caractères).
J'ai pensé faire :

Code :
  1. Balises=(char**)malloc(sizeof(char*)*nbBalises);


ou :

Code :
  1. Balises=(char*)malloc(sizeof(char)*nbBalises*15);


Mais je ne suis sur d'aucune des deux écritures.
Si quelqu'un peut m'aider c'est gentil.
 :hello:


---------------
"Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet" Georges Courteline
mood
Publicité
Posté le 20-02-2007 à 15:55:20  profilanswer
 

n°1517136
-ThX-
Not here anymore
Posté le 20-02-2007 à 16:38:02  profilanswer
 

Bonjour :)
 
http://mapage.noos.fr/emdel/notes.htm#char_star
 
Lire : char*, char** et "bien utiliser malloc

n°1517141
Lord Bab's
Posté le 20-02-2007 à 16:48:26  profilanswer
 

Merci -ThX-
 
Mon problème c'est que je ne sais pas comment allouer un tableau de "nbBalises" chaines de caractères de longueur 15.

n°1517173
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-02-2007 à 17:44:30  profilanswer
 

Lord Bab's a écrit :

Mon problème c'est que je ne sais pas comment allouer un tableau de "nbBalises" chaines de caractères de longueur 15.


Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. /* definir le type de la chaine de 15 */
  5. typedef char tab_a[15 + 1];
  6. int main (void)
  7. {
  8.    int nbBalise = 5;
  9.    /* allouer un tableau dynamiquement */
  10.    tab_a *p = malloc (nbBalise * sizeof *p);
  11.    if (p != NULL)
  12.    {
  13.       int i;
  14.       /* effacement des chaines */
  15.       for (i = 0; i < nbBalise; i++)
  16.       {
  17.          strcpy (p[i], "" );
  18.       }
  19.       /* affectation securisee de quelques chaines. */
  20.       strncat (p[1], "hello world", sizeof *p - 1);
  21.       strncat (p[3], "hello wild world", sizeof *p - 1);
  22.       /* affichage des chaines */
  23.       for (i = 0; i < nbBalise; i++)
  24.       {
  25.          printf ("%d : '%s'\n", i, p[i]);
  26.       }
  27.       /* liberation du bloc */
  28.       free (p), p = NULL;
  29.    }
  30.    return 0;
  31. }



0 : ''
1 : 'hello world'
2 : ''
3 : 'hello wild worl'
4 : ''

 

Press ENTER to continue.


Message édité par Emmanuel Delahaye le 20-02-2007 à 17:45:57

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1517847
Lord Bab's
Posté le 21-02-2007 à 17:22:07  profilanswer
 

Merci beaucoup Emmanuel Delahaye. J'ai essayé et ca a l'air de marcher.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Question sur l'allocation dynamique

 

Sujets relatifs
Question sur API windows VB WordProblème avec tableau dynamique à deux dimensions
Question de conception d'une tableManipulation de matrices, Allocation dynamique...
Question sur ORDER BY avec MATCH[C#] [Résolu] Comment communiquer avec une dll c++
Menu Dynamique en C++Question bête sur "new"
Question sur les CASE... BREAK 
Plus de sujets relatifs à : [C] Question sur l'allocation dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR