我遇到编译问题。我的代码在DevC ++中工作但在Visual Studio 2017中没有正确使用。在Vs-2017中,如果我只输入数字,那么它将起作用。但如果我输入字母,它会进入无限循环。其他编译器(如DevC ++)没有错误,那么为什么在我尝试在VS-2017中编译它时它没有完全运行。
以下是VS-2017中使用的完整代码,以便您可以复制粘贴以检入VS-2017。请建议。
#include "stdafx.h"
#include<stdio.h>
int main(void)
{
int num[10];
int i;
printf("Enter 10 numbers: \n\n");
for (i = 0; i <= 9; i++)
{
printf("Number %d = ", i + 1);
while (scanf_s("%d", &num[i]) != 1)
{
printf("Invalid number. Enter again.\n");
// fprintf(stderr,"%s\n","Invalid number. Enter again"); // May also use this
}
}
}
答案 0 :(得分:0)
您应输入一个字符(使用带有%c的scanf,而不是%d)。 通过这种方式,您的程序将期望查找任何字符,而不是数字。 那么你应该检查它是数字(0-9)还是字母(a-z,A-Z)。