6

我打算将字符串数组存储在 C 中的数组中。

例如

{
{"hello", "world"},
{"my", "name", "is"},
{"i'm", "beginner", "point", "makes"}
}

我想存储以上数据。

我试着用

char *arr1 = {"hello", "world"};
char *arr2 = {"my", "name", "is"};
char *arr3 = {"i'm", "beginner", "point", "makes"}

但我不知道如何将这些数组存储在一个数组中。

提前致谢。

附言。

如何打印所有元素?

const char **arr[] = {arr1, arr2, arr3};
4

2 回答 2

10

如果您想要一个char**数组,只需执行以下操作:

const char *arr1[] = {"hello", "world", NULL};
const char *arr2[] = {"my", "name", "is", NULL};
const char *arr3[] = {"i'm", "beginner", "point", "makes", NULL};

const char **arr[] = {arr1, arr2, arr3, NULL};

请注意,NULL终止符用于跟踪不同数组的大小,就像在以NULL 终止的字符串中一样。

int i, j;
for(i = 0; arr[i] != NULL; ++i) {
    for(j = 0; arr[i][j] != NULL; ++j) {
        printf("%s ", arr[i][j]);
    }
    printf("\n");
}

这将输出:

hello world
my name is
i'm beginner point makes
于 2013-05-29T15:14:04.237 回答
8

与我最初的评估不同,它可以用单个文字来完成。

#include <stdio.h>

int main()
{
    char* arr[3][4] = {
      {"hello", "world"},
      {"my", "name", "is"},
      {"i'm", "beginner", "point", "makes"}
    };

    printf ("%s", arr[2][3]);
    return 0;
}

数组 1 和 2 将在末尾用零填充,长度为 4。

输出:

使

在这里测试过:http: //ideone.com/yDbUuz

于 2013-05-29T15:20:11.690 回答