void add_choosemessage(CHO lessons[]) { printf("请输入选课信息,学号输入为0时,输入结束\n"); int i=0; for(i=0;;i++) { printf("请输入学号"); scanf("%d",&lessons[i].number); if(lessons[i].number==0) break; printf("请输入姓名"); scanf("%s",lessons[i].name); printf("请输入课程号"); scanf("%d",lessons[i].lessonnumber); printf("请输入课程名"); scanf("%s",lessons[i].lessonname); printf("请输入学期"); scanf("%d",&lessons[i].semester); } }这个函数有什么问题
时间: 2024-02-23 21:57:55 浏览: 101
MATLAB实现PCA-GRU主成分降维结合门控循环单元多输入单输出回归预测(完整源码和数据)
5星 · 资源好评率100%
这个函数的一个问题是在输入课程号时,应该使用取地址符`&`获取课程号的地址,否则会导致编译错误。修改后的代码如下:
```
void add_choosemessage(CHO lessons[]) {
printf("请输入选课信息,学号输入为0时,输入结束\n");
int i=0;
for(i=0;;i++) {
printf("请输入学号");
scanf("%d",&lessons[i].number);
if(lessons[i].number==0)
break;
printf("请输入姓名");
scanf("%s",lessons[i].name);
printf("请输入课程号");
scanf("%d",&lessons[i].lessonnumber); // 加上取地址符&
printf("请输入课程名");
scanf("%s",lessons[i].lessonname);
printf("请输入学期");
scanf("%d",&lessons[i].semester);
}
}
```
此外,该函数没有对数组越界情况进行处理,如果输入的选课信息数量超过了数组的大小,就会导致程序崩溃。因此,建议在函数开头定义一个常量来表示数组的最大大小,并在输入时进行判断,如果超过了最大大小就不再继续输入。
阅读全文