Bonjour,

j'essai d'allouer un tableau à 2D en connaissant la taille d'une seule dimension.

et sur chaque ligne je met une chaine de caractère dont je ne connais pas la taille.

le problème et que lorsque je fais l'initialisation par une boucle for j'ai toujours la dernière chaine dans tous mon tableau.

voici mon code :

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
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
    char** Aj;
    char num[2];
    char toto[4]="Bon";
    char tmp[4];
    int i,n=7,j=5,k;
 
    Aj=(char**) malloc (n*sizeof(char*));
 
    for(i=0;i<n;++i)
       Aj[i]=(char*) malloc (sizeof(char)*j);
	/*for(i=0;i<n;i++)
        Aj[i]="Bonjo";*/
   /* for(i=0;i<n;++i)
		for(k=0;k<j;++k)
			Aj[i][k] = 'a';*/
   for(i=0;i<j;i++)
   {
	   for(k=0;k<n;++k)
	   {
           strcpy(tmp,toto);
           itoa(i,num,10);
           strcat(tmp,num);
           Aj[i] = tmp ; 
	   }
   } 
 
   //for(i=0;i<n;i++)
    for(i=0;i<j;++i)
		printf("valeur dans le tableau : %s\n",Aj[i]);
 
   //for(i=0;i<n;++i)
     //  free(Aj[i]);
   free(Aj);
 
    return 0;
}