一道C语言结构体的基础题

题目是运用结构体输入输出学生信息

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 4

struct Date
{
    int year;
    int month;
    int day;
};

struct STU
{
    char name[20];
    char sex;
    struct Date birthday;
};

void input(struct STU stu[])
{
    for (int i = 0; i < N; i++)
    {
        scanf("%s", &stu[i].name);
        scanf("%c", &stu[i].sex);
        scanf("%d %d %d", &stu[i].birthday.year, &stu[i].birthday.month, &stu[i].birthday.day);
    }
}

void output(struct STU stu[])
{
    for (int i = 0; i < N; i++)
    {
        printf("%s %c %d %d %d\n", stu[i].name, stu[i].sex, stu[i].birthday.year, stu[i].birthday.month, stu[i].birthday.day);
    }
}

int main()
{
    struct STU stu[N];
    input(stu);
    output(stu);
    return 0;

}

为什么运行起来会是一串乱码呢 麻烦各位看看哪里出了问题谢谢!!

代码没问题 可能你输入的时候输入多了回车等
你应该这样输入
name
m1999 1 1

处理一下换行符

void input(struct STU stu[])
{
    for (int i = 0; i < N; i++)
    {
        scanf("%s", stu[i].name);
        scanf("%c", &stu[i].sex);
        getchar();
        scanf("%d %d %d", &stu[i].birthday.year, &stu[i].birthday.month, &stu[i].birthday.day);
    }
}

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 4
struct Date
{
    int year;
    int month;
    int day;
};
struct STU
{
    char name[20];
    char sex;
    struct Date birthday;
};
void input(struct STU *stu)
{
    for (int i = 0; i < N; i++)
    {
        scanf("%s", stu[i].name);
        getchar();
        scanf("%c", &stu[i].sex);
        scanf("%d %d %d", &stu[i].birthday.year, &stu[i].birthday.month, &stu[i].birthday.day);
    }
}
void output(struct STU stu[])
{
    for (int i = 0; i < N; i++)
    {
        printf("%s %c %d %d %d\n", stu[i].name, stu[i].sex, stu[i].birthday.year, stu[i].birthday.month, stu[i].birthday.day);
    }
}
int main()
{
    struct STU stu[N];
    input(stu);
    output(stu);
    return 0;
}

getchar();//消除缓存

img


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 4
struct Date
{
    int year;
    int month;
    int day;
};
struct STU
{
    char name[20];
    char sex;
    struct Date birthday;
};
void input(struct STU stu[])
{
    int i;
    for ( i = 0; i < N; i++)
    {
        scanf("%s", &stu[i].name);
        scanf("%c", &stu[i].sex);
        getchar();//消除缓存 
        scanf("%d %d %d", &stu[i].birthday.year, &stu[i].birthday.month, &stu[i].birthday.day);
    }
}
void output(struct STU stu[])
{
    int i;
    for ( i = 0; i < N; i++)
    {
        printf("%s %c %d %d %d\n", stu[i].name, stu[i].sex, stu[i].birthday.year, stu[i].birthday.month, stu[i].birthday.day);
    }
}
int main()
{
    struct STU stu[N];
    input(stu);
    output(stu);
    return 0;
}