納得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減らしていき、表示させます。