当检测到char时,如何在C中获取scanf以打印错误?

时间:2013-09-16 05:46:38

标签: c scanf

这就是我认为代码应该是这样的。顺便说一句,它在一个函数(主要)中。

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

2 个答案:

答案 0 :(得分: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扫描新读取的行。

答案 1 :(得分:0)

使用fread代替scanf来阅读stdin的输入。解析用户提供的输入以检查是否将char作为输入,然后打印错误。