在添加信息时,第一次输入的姓名输出时总是空白

img


void add()
{
int t=n;
printf("请输入新同学的姓名:");
scanf("%s",stu[t].name);
printf("请输入新同学的学号:");
scanf("%d",&stu[t].number);
printf("请输入新同学的性别(男/女):");
scanf("%s",stu[t].sex);
printf("请输入新同学的语文成绩:");
scanf("%d",&stu[t].chinese_score);
printf("请输入新同学的数学成绩:");
scanf("%d",&stu[t].math_score);
printf("请输入新同学的英语成绩:");
scanf("%d",&stu[t].english_score);
n=t+1;
printf("信息录入完毕!\n");
show();
}

//struct student stu[]
struct student stu[100] = {{"王一", 1, "男", 78, 86, 66},
                        {"王五", 2, "男", 85, 92, 66},
                        {"李丽", 3, "女", 83, 83, 49},
                        {"李岚", 4, "女", 75, 58, 62},
                        {"张三", 5, "男", 96, 72, 100}};

int n = 5;  //改成初始化数据的大小 5

在scanf("%s",stu[t].name)前清空一下缓存,添加如下语句:
fflush(stdin);
如下:

int t=n;
fflush(stdin); //添加这一句
printf("请输入新同学的姓名:");
scanf("%s",stu[t].name);
//后面的代码...

如果你用的是vs2015及以后的版本,ffush(stdin)已经失效,改成

rewind(stdin);

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632