2016-04-19 21 views
0

ファイルにいくつかの数値を入力しようとしていたため、whileループが作成されました。値を入力した後、私は彼にプロセスを繰り返すかどうか尋ねます。しかし、プログラムは2番目のprintf文を出力し、whileループは終了します。プログラムは:scanfがwhileループで動作しない

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    FILE *fp; 
    fp = fopen("numbers.txt", "w"); 
    int a; 
    char ch = 'y'; 
    while(ch == 'y') 
    { 
     printf("Enter the number\n"); 
     scanf("%d", &a); 
     fprintf(fp, "%d", a); 
     printf("Do you want to continue?"); 
     scanf("%c", &ch);       //doesn't work at all 
    } 
    fclose(fp); 
    return 0; 
} 

なぜ2番目のscanfは機能しませんか?

+2

'scanf("%c "、&ch);' - > 'scanf("%c "、&ch);'誰かがデュプリを見つけてください。 –

答えて

0
scanf("%c", &ch); 

scanf(" %c", &ch); 

する必要がありますが%c前のスペースに注意してください。 %cによってピックアップされた整数(a)をスキャンしている間に改行文字があるので、スペースを使用してそれを取り除く必要があります。

3

これは、入力バッファに改行文字が残っているためです。

あなたは何のコマンドラインは

パラメーターないため scanf()サイドノート

1として

scanf(" %c", &ch); 

)に%c前にスペースを与えることによってmain()の標準的な定義を使用してくださいすることを消費することができます

int main(void) 

2)Ch返り値fopen()scanf()などの関数呼び出しを返します。

関連する問題