This question already has answers here:
Closed 3 years ago.
scanf getchar function is skipped
(2个答案)
我最近开始用C语言编程,我对这段代码有问题:
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1416

int main () {
    float x;
    int y;

    x = PI;

    printf("Enter y: ");
    scanf(" %i", &y);
    printf("The new value of y is: %i.\n\n",y);

    x = x * y;
    printf("The new value of x is: %f.\n\n",x);


    getchar();
    return 0;
}

问题出现在最后的getchar(),程序关闭并且不等待输入。我找到了一个我根本不喜欢的解决方案,就是添加2次getchar()。有办法吗?,im使用ubuntu所以system("pause")不是一个选项

最佳答案

scanf命令不会使用输入y后按下的回车键。因此,getchar()很高兴地消费了它。
一种解决方案是在读取y之后使用输入行的其余部分;其代码如下所示:

int ch; while ( (ch = getchar()) != '\n' && ch != EOF ) {}

尽管在程序结束时有其他暂停选项,但无论如何这可能是一个好主意,因为如果以后扩展程序以期望字符串或字符输入,则这是必要的。

关于c - 跳过了getchar和scanf的麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28976740/

10-15 06:05