validationscanf参数

我需要validationscanf参数,例如

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". 

一旦遇到与格式说明符不匹配的符号, scanf将立即停止扫描。 因此,如果您的scanf返回1,则只解释第一个格式参数。

 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 } 

另请注意,小于成功解析的最大数量的返回值也可能表示错误。 在这种情况下,您应该咨询ferror()