質問: 下記のように、3つの文字列を入力させた上で、その3つの文字列を連結した状態のものを出力させるプログラムを入力したいのですが、自分のプログラムではうまく行きませんでした。 **実行例** ``` 文字列1を入力してください:One 文字列2を入力してください:Two 文字列3を入力してください:Three 連結した結果:OneTwoThree ``` **ソースコード** ``` int main(void) { char *s1[128],*s2[128],*s3[128]; printf("文字列1を入力してください: "); scanf("%s",s1[128]); printf("文字列2を入力してください: "); scanf("%s",s2[128]); printf("文字列3を入力してください: "); scanf("%s",s3[128]); printf("%s\n",s1[128]); printf("%s\n",s2[128]); printf("%s\n",s3[128]); return 0; } ``` **コンパイル結果** ``` $ ./a.out 文字列1を入力してください: One 文字列2を入力してください: 文字列3を入力してください: Two Segmentation fault (コアダンプ) ``` なぜ「文字列2を入力してください」と「文字列3を入力してください」の部分が識別されていないのかもわかりません。どのようにプログラムすればうまくコンパイルできるようになるのでしょうか。
回答: 単純に直すならこんな感じです。 ``` #include int main(void) { char s1[128],s2[128],s3[128]; printf("文字列1を入力してください: "); scanf("%s",s1); printf("文字列2を入力してください: "); scanf("%s",s2); printf("文字列3を入力してください: "); scanf("%s",s3); printf("%s",s1); printf("%s",s2); printf("%s\n",s3); return 0; } ```