This question already has answers here:
Closed 3 years ago.
scanf getchar function is skipped
(2个答案)
我最近开始用C语言编程,我对这段代码有问题:
问题出现在最后的
尽管在程序结束时有其他暂停选项,但无论如何这可能是一个好主意,因为如果以后扩展程序以期望字符串或字符输入,则这是必要的。
(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