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()
。