C语言的scanf_s函数同时读取int类型与字符串类型后,int类的输出与输入不一致问题

在学习结构体时遇到的问题,关于如下代码

#include<stdio.h>

struct player 
{
    char name[16];
    int health;
    float damage;
    char magic;
}p1, p2, p3, p4; 

int main(void)
{
    scanf_s("%d%s", &p1.health,  p1.name, 17);
    printf("name:%s\nhealth:%d", p1.name, p1.health);
}

在vs2022中运行后,输入的整数变量与字符串变量,字符串变量能正常输出,整数类型却会产生变化,

img


img

而这里如果将int类修改为float类,虽然有一些误差但基本正常输出,想请问各位是为什么,谢谢!

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^