###前提
書籍でc言語を勉強している学生です。
書籍の解答がないため、問題のヒントや解説をしていただけると嬉しいです。
###問題
lang
1#include <stdio.h> 2 3int main (void) 4{ 5 int i; 6 char s[3][128]; 7 8 for(i = 0; i < 3; i++){ 9 printf("s[%d] : ", i); 10 scanf("%s", s[i]); 11 } 12 13 putchar('\n'); 14 15 for(i = 0; i < 3; i++){ 16 printf("s[%d] = \"%s\" \n", i, s[i]); 17 } 18 19 return 0; 20} 21
上記のコードを以下のように書き換えなさい
・文字列の個数を3ではなく大きな数とし、その値をオブジェクト形式マクロとして定義する。
・最初のfor文で"$$$$$"を読み込んだ時点で読み込みを中断・終了する。
・2番目のfor文では、"$$$$$"より前に入力された全文字列を表示する。
###該当のソースコード
lang
1#define NUMBER 6 2 3int main (void) 4{ 5 int i; 6 int j = 0; //$$$$$より前の個数 7 char s[NUMBER][256]; 8 9 for(i = 0; i < NUMBER; i++){ 10 printf("s[%d] : ", i); 11 scanf("%s", s[i]); 12 j++; 13 14 if(s[i] == "$$$$$"){ 15 i = NUMBER; 16 } 17 } 18 19 for(i = 0; i < j; i++){ 20 printf("s[%d] = \"%s\" \n", i, s[i]); 21 } 22 23 return 0; 24} 25
###疑問点
最初のfor文で中断・終了するために
if(s[i] == "$$$$$"){ i = NUMBER; }
と、したのですが上手く動作しませんでした。
s[i]に"$$$$$"が入力されたとき、iにNUMBERが代入され、後にインクリメントされて
iがNUMBERより大きくなるためfor文から抜け出せる!
と思ったのですが…
###補足情報
書籍 : 新明解c言語 入門編
演習 9-3
コードが長くてすみません
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/17 06:06