C用户输入scanf

问题遇到的现象和发生背景

刚开始学习C,在用户输入这一块练习时发现的问题

遇到的现象和发生背景,请写出第一个错误信息
#include 
int main() {
    float height;
    float weight;
    printf("请输入身高和体重\n");
    scanf_s("%f %f\n", &height, &weight);
    printf("身高为%f,体重是%f", height, weight);
}

从键盘获取数据时,我输入了两个数据后程序却没有停止

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

我发现输入三个数据才会停止

img

这是为什么,我也尝试在数据后添加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",只需输入数值即可。