C中的字符串指针数组

我知道C中的字符串基本上是一个字符数组。

我正在尝试一个指针数组,指针链接到字符串

我基本上想打印出来,而不依赖’\ n’来排序它

12345 abcde 67890 fghij 

这是我的代码 – >

 char *array1 = "12345"; char *array2 = "abcde"; char *array3 = "67890"; char *array4 = "fghij"; char *array_2d[3]; array_2d[0] = &array1; array_2d[1] = &array2; array_2d[2] = &array3; array_2d[3] = &array4; int i,j; for(i = 0; i<3 ; i++ ) { for(j = 0; j<3 ; j++) { printf("%c", array_2d[i][j]); } } 

我可能会犯错误,所以任何线索都会受到赞赏

有两个错误:

  1. 你声明char *array_2d[3]这意味着你的数组大小为3,索引为0到2,但你分配了array_2d[3] = &array4:
  2. 你的变量array1array4已经是char *所以对array_2d元素的正确赋值是array_2d[0] = array1等等

我知道C中的字符串基本上是一个字符数组。

字符串是以空字符结尾的字符数组

array_2d[0] = &array1;

&array1char **类型(指向字符串的指针),而你想要一个char * (即array1 )。

 array_2d[0] = array1; 

试试这个…..

 #include  #include  main() { char *array1 = "12345"; char *array2 = "abcde"; char *array3 = "67890"; char *array4 = "fghij"; char *array_2d[4]; array_2d[0] = array1; array_2d[1] = array2; array_2d[2] = array3; array_2d[3] = array4; int i,j; for(i = 0; i<4 ; i++ ) { for (j = 0; j<5; j++) { printf("%c", array_2d[i][j]); } printf(@"\n"); } }