納得C言語!
演習問題III 第2問の解答
2 複数文字列の格納
解答プログラム
#include <stdio.h>
#include <string.h>
int main()
{
//2次元配列strの宣言
//配列の数は余裕を持って宣言しています
char str[256][256];
int i=0;
printf("何か入力してよね!\n");
//無限ループ
while(1){
//i番目の配列に文字列を格納
scanf("%s",str[i]);
//入力された文字列が"END"の場合
//無限ループから抜ける
if(strcmp(str[i],"END")==0){
//"END"を表示させないため
//iを減らす
i--;
break;
}
i++;
}
//このときiには入力された
//文字列の数が入っている
//iがに0なるまでiを減らす
for(i;i>=0;i--){
printf("%s\n",str[i]);
}
return 0;
}
解説
文字列を複数格納するために、2次元配列を用意します。
このとき、格納される文字列は不定になるため、多めに用意しておきましょう。
次に、入力された文字列を格納していきます。
格納する文字列の数が不定なため、whileで無限ループを作るといいですね。
scanfでstr[i]となっているのは、i番目の配列に文字列を格納するということです。
このときも格納するのは文字列なので先頭に&は必要ありませんね。
ENDが入力されたら終了なので、文字列比較のstrcmp関数を使って入力されたら終了とします。
このとき、ENDは表示させたくないので、iを1引いておきます。
そうすれば、iには格納された文字列の数が入っていますね。
表示させるにはiが0になるまで1減らしていき、表示させます。