default_g 2017-10-29 09:47 采纳率: 0%
浏览 843

数据结构小白求助大神们,为什么程序在输入完一个数据后总报错?

以下为代码,编译没问题,一输入数据就停止工作,折腾一下午了,求大神帮忙指点
#include
#include
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define init_size 100
#define listincrement 10
typedef int status;
typedef struct{
status e;
int length;
int listsize;
}sqlist;
void initlist(sqlist L){
L.e = (status
)malloc(init_size*sizeof(status));
if(!L.e)exit(OVERFLOW);
L.length = 0;
L.listsize = init_size;
}
void inp(status p,sqlist L){
status e,*q;
scanf("%d",&e);
for(;e!=-1;L.length++){
if(L.length>=L.listsize){
p = (status
)realloc(p,(L.listsize+listincrement)*sizeof(status));

        }
        q=p+L.length-1;
        *q = e;
        if(!p)exit(OVERFLOW);
        continue;
    }

    return;

}

void outp(sqlist L){
for(int i=1;i<=L.length;i++){
printf("%d",L.e[i]);

}

}
int main(){
sqlist L;
initlist(L);
inp(L.e,L);
outp(L);
return 0;
}

  • 写回答

1条回答 默认 最新

  • 郭建堂 2017-10-30 03:11
    关注

    q=p+L.length-1 . 这个l.length的初始值是0把. 这个是不是会越界.
    而且你这个程序应该只能在32位的编译器下有效, 因为你默认 int 和int * 都是4个字节. 再看一下自己的编译器是不是32位的

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置