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 回答
2

代替

scanf("%c", &f);

f=getch();
于 2013-05-12T14:26:17.267 回答