C-get_num()函数问题依然存在??
#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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是为什么。。
scanf函数的返回值是输入的数据的个数,如果输入的格式正确,那就返回相应的值,如果输入的格式错误,就返回0。但是看来,后面无论输入多少字母,都会被scanf忽略掉。
我用的是vs2012,可能编译器的版本跟你的不太一样。(忽略警告)
最后一张用的是gcc,看起来也不正确。
这就是为什么scanf被称为“不安全的输入函数”的原因,因为它只接受前面格式符所规定的字符,其余的全部被忽略掉了。