int number[20]
修改为
char number[20]
相应的
202205052修改为
"202205052"
%d\n", pd->number
修改为
%s\n", pd->number
非专业,提的是自己的见解:
1,number是一个数组,你给他在主函数附值的时候只给了一个数202205052
2,第三个printf里面的pd应该要打*号吧?
【以下回答由 GPT 生成】
问题原因是没有为结构体中的变量number
进行初始化。C语言中,未初始化的变量的初始值是未定义的,可能是随机值。
要修复这个问题,可以在结构体定义时对变量number
进行初始化,将其初始值设置为一个固定的值。例如,可以将结构体定义如下:
struct Student {
char name[15]; //姓名
char sex[10]; //性别
int number = 0; //学号,进行初始化
};
这样,每次运行时,打印的number
的结果就会是相同的。
【相关推荐】
学号直接long吧
#include<stdio.h>
struct Stu
{
char name[15];
char sex[10];
char number[20];
};
int main(void)
{
Stu s1 = { "张三" ,"男","202205052"};
Stu* p1 = &s1;
printf("%s\n",p1->name);
printf("%s\n", p1->sex);
printf("%s\n", p1->number);
getchar();
return 0;
}