scanf取int但只有在输入另一个char / int并按Enter后才继续执行

时间:2013-12-10 18:31:45

标签: c scanf

在我的代码中(在c中)scanf()取一个整数值,但是当我输入一个整数并按下回车键时,没有任何反应(执行不会按原样继续)。我需要按一个键,然后程序继续我先按下的号码。

例如: 代码:

int num=0;
printf("Enter a number and see if he belong to one of the groups:");
scanf("%d\n\n",&num);

输出:

Enter a number and see if he belong to one of the groups:5(enter) 

f(enter)

然后代码才会继续......

2 个答案:

答案 0 :(得分:1)

好吧,您似乎在告诉scanf读取两个换行符,而不是一个:

scanf("%d\n\n", &num);

这应该给出正确的行为:

scanf("%d\n", &num);

答案 1 :(得分:1)

如果接受

的解决方案
scanf("%d\n", &num);

与您发布的代码的工作方式不同,您有一个不兼容的编译器。 "%d"之后的空格,"\n""\t"" "或其他内容以及它们的数量应该没有区别。它们在空格之后消耗0或更多。在输入非空格(或EOF)之前,scanf("%d\n", &num)不会返回。

正如@pepo建议的那样,使用

scanf("%d", &num);

或者更好,使用fgets()/sscanf()