C-get_num()函数问题依然存在??

发布于 2016-10-11 04:52:49 字数 954 浏览 1228 评论 1

#include <stdio.h>
#include <math.h>

void get_num(float * px, float * py);//获取两个浮点数
void calculate(double * panswer, float * px, float * py);//计算结果

int main(void)
{
float x, y;
double answer;

printf("请输入两个浮点数:n");
get_num(&x, &y);
calculate(&answer, &x, &y);
printf("二者之差除以二者之积的结果是:n%lf或%lfn",
answer, -answer);

return 0;
}

void get_num(float * px, float * py)
{
int judge;

judge = scanf("%f%f", px, py);
while (judge != 2)
{
printf("输入有误!重新输入:n");
while (getchar() != 'n')
continue;
judge = scanf("%f%f", px, py);
}
return;
}

void calculate(double * panswer, float * px, float * py)
{
*panswer = fabs(*px - *py) / (*px * *py);
return;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-02-15 04:29:36

这是为什么。。

scanf函数的返回值是输入的数据的个数,如果输入的格式正确,那就返回相应的值,如果输入的格式错误,就返回0。但是看来,后面无论输入多少字母,都会被scanf忽略掉。
我用的是vs2012,可能编译器的版本跟你的不太一样。(忽略警告)
最后一张用的是gcc,看起来也不正确。

这就是为什么scanf被称为“不安全的输入函数”的原因,因为它只接受前面格式符所规定的字符,其余的全部被忽略掉了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文