C语言结构体数组循环输入赋值,为什么只能赋值一次?

2024-12-01 18:30:21
推荐回答(2个)
回答(1):

不要用gets()函数,这个函数会从输入缓冲区开始读入数据,直到碰到'\0'为止;
因此你上一次输入的回车符在下一次的gets()时会被自动读入
改用
scanf_s("%s%d%d%d%d", x[i].name,20,&x[i].xuehao, &x[i].shuxue, &x[i].yingyu, &x[i].cyuyan);
x[i].zhongfen = x[i].shuxue + x[i].yingyu + x[i].cyuyan;
}
即可。

回答(2):

在scanf_s后面加上一句getchar();
有可能是输入第二行之后的那个回车被第二次循环的gets接收了。