0

C で文字列のさまざまな配列を定義したいのですが、たとえば次のように、他の値に応じて選択できます。

char foo[][10] = {"Snakes", "on", "a", "Plane"};
char bar[][10] = {"Fishes", "in", "a", "Lake"};
char *choice;
if (flag == 1) {
  choice = &foo;
} else if (flag == 2) {
  choice = &bar;
} 
printf("%s%s\n", choice[0] , choice[1]); 

ケースで期待される結果flagは 1:

スネークソン

ケースで期待される結果flagは 2:

フィシェシン

しかし、上記のコードではエラーが発生しますが、 、つまりとsegmentation faultの異なる定義を試しました。それを正しく行う方法は?この問題、つまりポインター、配列、上記の例の正確な内容に関する優れたチュートリアルはありますか...charchar*char**foo

4

2 に答える 2

5

ポインターの配列を使用するだけの方が簡単です。

int main(void)
{
  const char *foo[] = { "Snakes", "on", "a", "Plane" };
  const char *bar[] = { "Fishes", "in", "a", "Lake" };
  const int flag = 17;
  const char **choice = (flag == 1) ? foo : bar;

  printf("%s %s\n", choice[0], choice[1]);

  return 0;
}

上記の印刷物

Fishes in
于 2013-06-24T11:12:23.133 に答える