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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?