刚开始学习C,在用户输入这一块练习时发现的问题
#include
int main() {
float height;
float weight;
printf("请输入身高和体重\n");
scanf_s("%f %f\n", &height, &weight);
printf("身高为%f,体重是%f", height, weight);
}
从键盘获取数据时,我输入了两个数据后程序却没有停止
我发现输入三个数据才会停止
这是为什么,我也尝试在数据后添加f,尝试表明其浮点数身份,但是结果其实是这个‘f’等同于第三个数据了因为我用任何一个字母达到的效果和输入‘f'一样
网上我没有搜到,
求解!
把scanf_s里的换行去掉;
输入有换行,那它只有遇到下一个非空字符才结束输入,所以你输入两个数后,不管多少换行,空格,只有再输入一个非空字符(你输入一个数了),才结束输入。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您好,这个问题出现的原因是您在使用scanf_s函数时,格式字符串中多余添加了一个换行符。将代码中的scanf_s函数格式字符串中的\n删除即可解决该问题。修改后的代码如下:
#include <stdio.h>
int main() {
float height;
float weight;
printf("请输入身高和体重\n");
scanf_s("%f %f", &height, &weight);
printf("身高为%f,体重是%f", height, weight);
return 0;
}
另外,输入数据时不需要加上字母"f",只需输入数值即可。