C 扫描不返回任何值

C 扫描不返回任何值,c,scanf,C,Scanf,我正在运行下面的程序,我得到的唯一输出是“你的电话号码是多少?”。 如果我随后输入任何数字,例如3,则不会再发生任何情况。 有人能帮忙吗? 我正在使用VS2017。 先谢谢你 #include <stdio.h> int main() { int x = 0; printf("whats your number?\n"); scanf_s(" %d", &x); printf("%d\n",x); getchar(); } #包括

我正在运行下面的程序,我得到的唯一输出是“你的电话号码是多少?”。 如果我随后输入任何数字,例如3,则不会再发生任何情况。 有人能帮忙吗? 我正在使用VS2017。 先谢谢你

#include <stdio.h>
int main()
{
    int x = 0;
    printf("whats your number?\n");
    scanf_s(" %d", &x);
    printf("%d\n",x);
    getchar();  
}
#包括
int main()
{
int x=0;
printf(“您的号码是多少?\n”);
扫描频率(“%d”和“x”);
printf(“%d\n”,x);
getchar();
}

我刚刚尝试了您在vs2017中的示例。它对我来说很好,除了
getchar()
不会等待,而是使用conio.h中的
\u kbhit()
scanf\u s
不返回任何值?您忽略了
scanf\u s
的返回值。Try
int retval=scanf_s(“%d”和&x)
现在
retval
将保存来自
scanf_s
的返回值。如果您的程序没有按预期在
getchar
等待,则可能会出现问题。这是因为
Enter
键在输入缓冲区中,但它不被
scanf_s
调用使用,因此
getchar
调用读取它并退出程序。请注意,
scanf_s()
是C11标准附录K中定义的可选标准函数。微软推荐;AFAIK没有在其他系统上实现它。但目前它是一个“标准”函数,尽管有人建议在下一个版本的C标准中删除或弃用它。@MichaëlRoy OK?我不确定你的评论与这个问题有什么关系。我的评论解释说,表示缓冲区长度的额外参数仅适用于字符和字符串格式,而不适用于整数、浮点等。