我有使用Structure的作业,我想我理解这个概念。 但是当我执行我的代码时,输出与我的输入不同。
我想输入3个学生信息,如姓名和考试成绩。
这是我的结构原型和数组代码:
struct StudentInfos{
unsigned int Student_Number;
char Student_Name[20];
char PE;
char Social;
char Math;
char Science;
char English;
};
struct StudentInfos Student[3];
以下是我输入数据的代码:
int Edit = 0;
for (Edit = 0; Edit < 3; Edit++) {
printf("Input Student Data\n\n");
printf("Student Number:");
scanf_s("%d", &Student[Edit].Student_Number);
printf("Name:");
scanf_s(" %s", Student[Edit].Student_Name, 20);
printf("PE:");
scanf_s(" %c", &Student[Edit].PE, 1);
printf("Social Studies:");
scanf_s(" %c", &Student[Edit].Social, 1);
printf("Math:");
scanf_s(" %c", &Student[Edit].Math, 1);
printf("Science:");
scanf_s(" %c", &Student[Edit].Science, 1);
printf("English:");
scanf_s(" %c", &Student[Edit].English, 1;
printf("\n\n\n");
}
如果代码运行正常,我想测试我的代码, 这是我的代码,显示学生[0]:
printf("\n\n\n");
printf("Student Number:%d\n", Student[0].Student_Number);
printf("Name:%s\n", Student[0].Student_Name);
printf("PE:%c\n", &Student[0].PE);
printf("Social Studies:%c\n", &Student[0].Social);
printf("Math:%c\n", &Student[0].Math);
printf("Science:%c\n", &Student[0].Science);
printf("English:%c\n", &Student[0].English);
答案 0 :(得分:1)
你犯了一个严重的错误
struct StudentInfos{
unsigned int Student_Number;
char Student_Name[20];
char PE;
char Social;
char Math;
char Science;
char English;
};
在声明中,您将其声明为char,并将其读为字符串??
scanf_s("%s", &Student[Edit].Social, 3);
答案 1 :(得分:1)
我找到了自己问题的答案。改变:
scanf_s(" %c", &Student[Edit].PE, 1);
到
scanf_s("%hhd", &Student[Edit].PE);
并显示学生[0]的结果。变化:
printf("PE:%c\n", &Student[0].PE);
到
printf("PE:%hhd\n", Student[0].PE);