7

円の面積を計算する関数を使った簡単なプログラムを書きました。また、プログラムはユーザーに再度計算するかどうかを尋ね、入力が の'N'場合、プログラムは停止するはずです。

絞り込まれたテストケースは次のとおりです。

#include<stdio.h>
#include<string.h>

int main(void)
{
    float r;
    char f;  
    do {    
        printf("Type the radius\n");
        scanf("%f", &r);
        printf("Repeat? [Press N for stop]");
        scanf("%c", &f);
    } while(f != 'N');
    getch();
    return 0;
}

しかし、意図したとおりにループが停止することはありません。

何か提案はありますか?

4

2 に答える 2

8
scanf("%c", &f);

次の繰り返しで消費される入力ストリームに改行文字を残します。フォーマット文字列にスペースを追加して、scanf() に空白を無視するように指示します。

scanf(" %c", &f); // Notice the space in the format string.
于 2013-05-12T12:38:37.660 に答える