C 一行中由空格分隔的2个浮点的错误句柄
这是我第一次尝试,但没有成功 如果我故意输入错误的输入值,它将转到INF循环,例如:asdas dfsad afdasC 一行中由空格分隔的2个浮点的错误句柄,c,C,这是我第一次尝试,但没有成功 如果我故意输入错误的输入值,它将转到INF循环,例如:asdas dfsad afdas float a,b ; while (1){ if(scanf("%f %f",&a,&b) == 2) { break; } printf("Error, try again:"); } 避免此类问题的最佳方法是使用fgets()一次读取整行,然后使用sscanf()解析它(或者在您的情况下,可能是strod())。这
float a,b ;
while (1){
if(scanf("%f %f",&a,&b) == 2) {
break;
}
printf("Error, try again:");
}
避免此类问题的最佳方法是使用
fgets()
一次读取整行,然后使用sscanf()
解析它(或者在您的情况下,可能是strod()
)。这不仅可以避免您现在遇到的特定问题,还可以避免在输入格式不符合预期时出现其他类型的问题。避免此类问题的最佳方法是使用fgets()
一次读取整行,然后使用sscanf()
(或者在您的情况下,可能是strod()
)对其进行解析。这不仅可以避免您现在遇到的特定问题,还可以避免在输入格式不符合预期时出现其他类型的问题。由于scanf()
等不关心行,因此如果您关心行,则使用这些函数是错误的。使用行读取函数(or)读取输入,然后使用sscanf()
解析该行。它不关心新词,但你知道它只有一句话可玩。此外,如果第一次解析失败,您可以重新解析该行;您还可以在错误消息中报告完整的行,这可以使调试更容易。由于scanf()
等不关心行,因此如果您关心行,则它们是错误的函数。使用行读取函数(or)读取输入,然后使用sscanf()
解析该行。它不关心新词,但你知道它只有一句话可玩。此外,如果第一次解析失败,您可以重新解析该行;您还可以在错误消息中报告完整的行,这可以使调试更容易。