如何修复同时获取两个字符串的错误

时间:2019-12-17 14:17:21

标签: c string loops structure

我有一项任务是输入一些学生的一些信息并以报告的形式导出

#include <stdio.h>
#define MAX 1000
typedef struct
{
    char id[6];
    char name[80];
    float grade;
    char classassessment;
} exam;
void clear_buffer()
{
    int ch;
    while ((ch = getchar()) != '\n' && ch != EOF)
        ;
}
char assess(float a)
{
    if (9 <= a && a <= 10)
        return 'A';
    else if (8 <= a && a < 9)
        return 'B';
    else if (6.5 <= a && a < 8)
        return 'C';
    else
        return 'D';
}
int main()
{
    char result[MAX];
    exam student[MAX];
    int n, i=0;
    printf("The number of students: ");
    scanf("%d", &n);
    clear_buffer();
    for (i = 0; i < n; i++)
    {
        printf("Enter student %d ID: ", i + 1);
        scanf("%s", student[i].id);
        clear_buffer();
        printf("Enter this student name: ");
        gets(student[i].name);
        printf("Enter this student's grade: ");
        scanf("%f", &student[i].grade);
        clear_buffer();
        result[i] = assess(student[i].grade);
    }
    for(i=0; i<n; i++)
    {
        printf("%d\t%s\t\t\t%s\t\t%c\n", i+1, student[i].id, student[i].name, result[i]);
    }
    return 0;
}

编译后,您可以看到student[i].id同时具有ID和名称,而student[i].name仍具有刚刚输入的学生的姓名。我无法解释为什么会出现此错误。

0 个答案:

没有答案