使用scanf()进行输入验证

Mat*_*hew 5 c validation integer input

我有一个程序接受用户的整数,并在加法操作中使用该数字.

我用来接受这个号码的代码是这样的:

scanf("%d", &num);
Run Code Online (Sandbox Code Playgroud)

如何验证输入,以便用户输入带小数点的字母或数字时,屏幕上会显示错误消息?

md5*_*md5 10

你应该使用scanf返回值.来自man scanf:

回报价值

这些函数返回成功匹配和分配的输入项的数量,这可以少于提供的数量,或者在早期匹配失败的情况下甚至为零.

所以它可能看起来像这样:

if (scanf("%d", &num) != 1)
{
    /* Display error message. */
}
Run Code Online (Sandbox Code Playgroud)

请注意,它不适用于"带小数点的数字".为此,您应该使用解析等strtol.它可能有点复杂.