这就是我认为代码应该看起来的样子。顺便说一下,它在一个函数(main)中。
char a;
if (a [is detected]) {
printf("Incorrect input format \n");
exit( EXIT_FAILURE );
}
请记住,数字也是字符。您要做的是使用scanf
扫描整数,并检查返回值。scanf
函数族的返回值是成功扫描或-1
出错的项目数。如果您扫描单个整数(格式"%d"
),则如果scanf
不返回1
则表示错误。
所以你可以做类似的事情
if (scanf(" %d", &number) == 1)
{
/* Got a number okay */
}
else
{
/* Not a number in the input */
}
还要记住,如果scanf
失败,输入仍然存在,所以你不能只是循环并希望当前输入被忽略。一种简单的方法是使用fgets
读取一行输入,然后使用sscanf
扫描新读取的行。
使用fread
而不是scanf
从 读取输入stdin
。解析用户提供的输入以检查是否char
作为输入给出,然后打印错误。