0

这就是我认为代码应该看起来的样子。顺便说一下,它在一个函数(main)中。

char a;
if (a [is detected]) {
    printf("Incorrect input format \n");
    exit( EXIT_FAILURE );
}    
4

2 回答 2

3

请记住,数字也是字符。您要做的是使用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扫描新读取的行。

于 2013-09-16T05:51:42.270 回答
0

使用fread而不是scanf从 读取输入stdin。解析用户提供的输入以检查是否char作为输入给出,然后打印错误。

于 2013-09-16T05:49:42.970 回答