Tableaux et pointeurs 2D

Bonjour à tous, je suis un novice en pointeur et, dans le code suivant, j’essaie de stocker les valeurs d’un tableau 2 D dans une structure, puis de les imprimer. Cependant, je reçois une erreur de compilation à la ligne: f d->mychar[i] = newptr[i]; Je comprends que si char * str est identique à str[] , char ** str n’est pas identique à str[][] , mais je ne trouve pas de solution pour faire le travail suivant.

 typedef struct mystruct{ char mychar [20][20]; }mystruct_t; void printvalues ( char ** newptr){ int i; mystruct_t * fd; for (i=0;imychar[i] = newptr[i]; printf("My value is %s and in struct %s\n", newptr[i], fd->mychar[i]); } } int main (int argc, char **argv){ int i; char * abc[5] = {"123", "456", "789"}; for (i=0;i<3;i++){ printf("My value is %s\n", abc[i]); } printvalues(abc); } 

Le problème était principalement lié à l’utilisation d’une structure non allouée. Vous avez utilisé un pointeur sur mystruct_t mais vous ne l’avez jamais atsortingbué. Ce qui suit fonctionne pour moi:

 #include  typedef struct mystruct { char* mychar [20]; } mystruct_t; void printvalues( char** newptr ) { int i; // note: you used an unallocated pointer in your original code mystruct_t fd; for ( i = 0; i < 3; i++ ) { fd.mychar[i] = newptr[i]; printf( "My value is %s and in struct %s\n", newptr[i], fd.mychar[i] ); } } int main( int argc, char **argv ) { int i; char * abc[5] = { "123", "456", "789" }; for ( i = 0; i < 3; i++ ) { printf( "My value is %s\n", abc[i] ); } printvalues( abc ); }