【发布时间】:2013-08-13 13:26:32
【问题描述】:
scanf("%f", &num);
我必须检查这是否是一个有效的浮点变量,如果它有 @ 或 ! 或 % 等符号,则停止执行。
建议?
【问题讨论】:
-
man page for
scanf说明它的返回值表示它匹配的值的数量。在您的情况下,如果num已设置为有效的float,则该值为 1 -
标题中不需要写“In C”,标签已经写好了。
-
您是否正在寻找一行上的有效浮点数?因为
scanf如果找到一个浮点数,但即使它后面有“东西”,它也会成功检索浮点数。例如,scanf("%f", &num)将从3.2@#$$%等输入返回1(读取的浮点数),将3.2的值放入num。当它到达@时,它就会停止读取。如果您需要扫描“东西”以到达下一个浮点数,您将需要一种机制,因为scanf("%f"...)只会坐在那里,在随后的调用中停留在@,返回0,除非你做别的事。 -
您应该举例说明哪些输入将被接受和拒绝(如果有)。或者通常你希望你的程序在给定一堆输入的情况下做什么。 (“停止执行”是否意味着您的程序应该退出并显示错误消息?或者
scanf()应该停止扫描?)scanf()和strtol()都不执行“验证”,即它们将接受任何以 a 开头的字符串浮动。
标签: c