多くのテストの後、入力バッファの仕組みを理解していないために問題があると思います。C - ユーザ決定ベースのdo/whileループが正しく動作しない
私は、反復を停止するためにユーザーが「いいえ」と入力するまで繰り返し続ける必要があるwhileサイクルを持っています。
私には2つの問題があります。
- しばらくは関係なく、ユーザが「いいえ」に入るか、2サイクル目の出力に問題が見ることができるよう
- 「はい」と等しくないものは何でも反復するために停止したことはありません。プログラムはユーザーに文字列の入力を要求せず、そのステップをスキップします。ユーザーはENTERだけを入力します。
CODE:
int foo = 0;
do{
int i, cycles;
char array[MAX_LENGTH+1];
for(cycles=0; cycles < MAX_READ_CYCLES; cycles++){
i=0;
printf("\n\nEnter a string: ");
char ch;
while ((ch = getchar()) != '\n' && ch != EOF) {
array[i] = ch;
i++;
}
array[i] = '\0'; //string terminator
printf("String you entered: %s\n", array);
printf("\nDo you want to continue? 1: yes/0: no \n");
scanf("%d", &foo);
}
} while(foo == 1);
OUTPUT
Enter a string: test
String you entered: test
Do you want to continue? 1: yes/0: no
0
Enter a string: String you entered:
Do you want to continue? 1: yes/0: no
3
Enter a string: String you entered:
Do you want to continue?
を見ます入力した文字列の出力の後に 'fflush(stdin)'を試してください。 – Mxsky
残念ながら、 'fflush(stdin)'を置いてもまだ正しく動作していません。プラス私は未定義の動作があるので、fflush(stdin)の使用を避けるように言われました。 – fbid
ここにあなたの答えです:http://stackoverflow.com/questions/16908008/scanf-getchar-working-correctly-only-first-time-through-loop – Mxsky