#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
希望能正常取值
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);
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!