结构输出是不同的

时间:2016-10-24 10:35:52

标签: c arrays structure

我有使用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);

2 个答案:

答案 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);

请参阅:Converting an int to char using printf