取值出现溢出希望能正常取值


#include<stdio.h>

struct person
{
    int num;
    char name[10];
    char sex;
    char job;
};
int main()
{
    struct person person[2] = { 0 };
    for (int i = 0; i < 2; i++)
    {
        scanf_s("%d%s%c%c", &person[i].num, person[i].name, &person[i].sex, &person[i].job);
    }
}

输入两个之后回车显示溢出
例子21 胡
输入四个也是同样结果
例子21 胡 m s
我使用的是vs2022
希望能正常取值

img

struct person结构体名 和person变量同名了; person变量名改成p
scanf_s函数字符变量后面要加字符串长度。scanf_s函数为了确保字符串安全,要求参数指定字符串的最大长度,避免溢出

    scanf_s("%d%s %c %c", &p[i].num, p[i].name, 9, &p[i].sex,1, &p[i].job,1);

你题目的解答代码如下:

#include<stdio.h>

struct person
{
    int num;
    char name[10];
    char sex;
    char job;
};
int main()
{
    struct person p[2] = { 0 };
    for (int i = 0; i < 2; i++)
    {
        scanf_s("%d%s %c %c", &p[i].num, p[i].name, 9, &p[i].sex,1, &p[i].job,1);
    }
    for (int i = 0; i < 2; i++)
    {
        printf("%d %s %c %c\n", p[i].num, p[i].name, p[i].sex,p[i].job);
    }
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632