我正在使用C编程,当我在cmd终端中运行程序时,我遇到了问题。这是我使用的代码:
#include <stdio.h>
int main() {
int num;
printf("enter a number: ");
scanf("%i\n", &num);
for(int n = 1; n < num + 1; n++){
printf("%i\n", n);
}
return 0;
}
一般来说,一切都像它应该的那样,只需要一件事。 当我输入一个数字时,没有任何反应。没有输出,直到我写任何东西然后按Enter键,然后才会出现数字。
这是它的样子截图。 这里输入数字(然后按回车键)但没有任何反应:http://prntscr.com/deum9a
这就是我输入随机内容之后的样子,并且弹出了所有数字:http://prntscr.com/deumyn
如果有人知道如何解决这个问题,请告诉我(
答案 0 :(得分:4)
从\n
scanf()
scanf("%i", &num);
如果格式字符串中有空格字符,scanf()
将忽略您输入的任意数量的空格,因此您执行的ENTER不会终止输入读取。基本上,您将被迫再次输入非空格字符 以完成scanf()
调用。
通常,scanf()
被认为对输入读数不利。因此,考虑使用fgets()
并使用sscanf()
解析输入。
请参阅:Why does everyone say not to use scanf? What should I use instead?