顺序表的输入输出错误

qq_33689013 2016-03-29 07:50:08
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<stdio.h>
using namespace std;
struct Student{
char id;
char name[10];
int gread;
};
struct List{
int length;
Student *elem;
};

int InitList(List&L,int m){

L.elem=(Student*)malloc(sizeof(Student)*m);
if(!(L.elem))
return 0;
L.length=0;
return 1;
}
void input(List&L,int n){
while(n--){
printf("输入学号:");
scanf("%s",&(L.elem+L.length)->id);
printf("输入姓名:");
char name[20];
scanf("%s",&name);
strcpy((L.elem+L.length)->name,name);
printf("输入成绩:");
scanf("%d",&(L.elem+L.length)->gread);
L.length++;
}
}
void output(List&L,int n){
if(L.length==0){
printf("表为空!");
exit(1);
}
for(int i=0;i<n;i++){
printf("学生学号:%s\n",(L.elem+i)->id);
printf("学生姓名:%s\n",(L.elem+i)->name);
printf("学生成绩:%d\n",(L.elem+i)->gread);
printf("\n");
}
}
int main(){
List L1;
int m;
printf("输入学生数:");
scanf("%d",&m);
InitList(L1,m);
input(L1,m);
output(L1,m);
}
无法输出
...全文
154 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-03-29
  • 打赏
  • 举报
回复
结构体中char id;应该改成数组类型

struct Student{
    char id;//应为数组类型
    char name[10];
    int gread;    
};
否则的话输出的时候用%s输出字符由于没有'\0',所以会越界,而刚好又是malloc出来的空间,所以是连续的,越界访问已经被占用的内存,啥都有可能发生。。。

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧