if (scanf("%c,%f,%f", &ch, &p1, &p2) != 3)
// How can I tell which parameter failed?
// If I want to output message such as "Second parameter must be a real nubmer".
switch (scanf("%c,%f,%f", &ch, &p1, &p2)) {
case 0:
// no parameters were parsed successfully
case 1:
// only first parameter succeeded
case 2:
// only the first two parameters succeeded
case 3:
// all three parameter succeeded
default:
// error
}
1条答案
按热度按时间disho6za1#
scanf
会在第一次遇到不匹配格式说明符的符号时停止扫描。因此,如果您的scanf
返回1,则仅解释第一个格式参数。另外请注意,小于最大成功解析次数的返回值也可能表示错误。在这种情况下,您应该咨询
ferror()
。