2

我知道 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]);
    }
}

我可能会犯错误,所以任何线索将不胜感激

4

3 回答 3

5

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

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

array_2d[0] = &array1;

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

array_2d[0] = array1;
于 2013-07-03T11:57:53.437 回答
2

有两个错误:

  1. 您声明char *array_2d[3]这意味着您的数组大小为 3,索引为 0 到 2,但您分配array_2d[3] = &array4:
  2. 您的变量array1toarray4已经char *如此正确分配给 in 的元素array_2d将是array_2d[0] = array1等等
于 2013-07-03T12:01:21.583 回答
2

尝试这个.....

#include <stdio.h>
#include <string.h>

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");
    }

}
于 2013-07-03T12:11:56.807 回答