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

しかし、これらの配列を 1 つの配列に格納する方法がわかりません。

前もって感謝します。

ps。

すべての要素を印刷するには?

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 で終わる stringNULLのように、さまざまな配列のサイズを追跡するためにここにあることに注意してください。

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 に答える