我正在进行一个编程练习,重点是在C中使用链表,这就是我如何定义节点结构和使用它的一些函数:
typedef struct log{
struct log* next;
long time;
int status;
char plate[];
}log;
log* init_lg(long t, int st, char pl[])
{
log* p = (log*)malloc(sizeof(log));
p->time = t; p->status = st; strcpy(p->plate, pl);
p->next = NULL;
return p;
}
void ins_lg(long t, int st, char pl[])
{
if (lg == NULL)
{
lg = init_lg(t, st, pl);
return;
}
log* i = lg;
while (i->next != NULL) i = i->next;
i->next = init_lg(t, st, pl);
}
然而,我发现
ins_lg
函数无法与正常工作
pl[]
长度超过7的字符串参数。
我不能缩小它的尺寸
pl[]
不幸的是,由于输入数据的原因,参数的长度必须大于7。那么,会有一个好的解决方案吗?
例如,我尝试过
pl[]
是“1234567”,运行良好,但当我更改
pl[]
进入“12345678”后,它似乎陷入了冻结状态,并在相当长的延迟后发出了一个返回代码为-103740940的进程。
我认为问题可能只是内存溢出,因为我测试了所有的函数,它们可以很好地使用更短(当然也更小)的参数值。