【发布时间】:2020-10-01 02:53:07
【问题描述】:
我想知道如何在函数 getFloats 中实现输入检查,以便在用户输入不需要的输入(例如单词或字母而不是数字)时,该函数会打印一条消息并为用户提供选项再试一次,这个函数退出并且不会提供重试输入的选项。停止使用scanf,开始使用更好的输入法是不是更专业?
#include <stdio.h>
void getFloats(float *a, float *b);
int main()
{
float num1,num2;
getFloats(&num1,&num2);
printf("%.2f and %.2f\n", num1, num2);
return 0;
}
void getFloats(float *a, float *b)
{
puts("Enter numbers:");
scanf("%f", a);
if ( scanf("%f", a) == 0)
{
puts("try again");
scanf("%f", a);
}
else
{
scanf("%f", b);
}
}
【问题讨论】:
-
我从不使用
scanf()。我更喜欢阅读整行,然后使用strtol()和strtof()系列函数。 -
不检查返回值就使用
scanf是不安全的。有关详细信息,请参阅此页面:A beginners' guide away from scanf() -
我上面链接的评论中的页面也说明了什么时候使用
scanf比较合适,什么时候使用fgets比较好。 -
@AndreasWenzel 那篇文章是一个令人难以置信的建议。谢谢
标签: c function pass-by-reference