0

我有以下数组声明

char array1[10] = "Nick";
char array2[10] = "Tomas";
char array3[10] = "Nathan";
char array4[10] = "John";
char array5[10] = "Paul";
char *new_array[3][1];

我想以这种方式创建一个新表

Nick Tomas
Nick Nathan
Nick John
Nick Paul

首先,我对 new_array 的声明是否正确?其次,到目前为止,我尝试过类似的事情,这当然是不正确的

for (j = 0; j<4; ++j)
    {
        new_array[j][k]=array1;
        for (k = 0; k<2; ++k)
        {
            new_array[j][k]=array2;
        }
    }
    for (j = 0; j<4; ++j)
        for (k = 0; k<2; ++k)
        {
            printf("%s\t", new_array[j][k]);
            if(j==1)
            printf("\n");
        }

我想要一个解决方案或一些细节如何使用 for 循环

4

1 回答 1

3

为什么不简单地像

char *new_array[][2] = {
    { array1, array2 },
    { array1, array3 },
    { array1, array4 },
    { array1, array5 }
};

要获取此数组中的条目数,您可以使用

sizeof(new_array) / sizeof(new_arrag[0])

但是,如果您将此数组作为参数传递给函数,它会衰减为指针,并且无法使用该“技巧”。相反,您必须将数字与数组一起传递。


要打印它,一次打印两个条目,可以使用如下内容:

for (size_t i = 0; i < sizeof(new_array) / sizeof(new_arrag[0]); i += 2)
    printf("%s %s\n", new_array[i], new_array[i + 1]);
于 2013-07-12T11:01:22.437 回答