我在尝试调整数组的大小以包含长度为“newlen”的值。如果newlen小于原始数组长度,则数组的末尾将被丢弃。如果newlen更大,则新整数应为零。我想出了这个功能,但是当我测试它时,我会遇到分段错误。我也不知道如何添加零到最后,我如何跟踪索引,以便我可以在最后添加int零点?我做了第一个案例(newlen小于len),但不知道如何处理其他案例。调整数组的大小(c)
下面是该阵列结构:
typedef struct {
int* data;
unsigned int len;
} intarr_t;
我的功能:
array_size(intarr_t* p, unsigned int newlength)
{
int i,m = 0;
if (newlength < len)
int *tmp;
tmp = realloc(p->data, (p->newlen)* sizeof *p->data);
if(tmp)
{
for (i; newlength < p->len; i++)
{ for (m; newlength < p->len; m++)
{
p->data[i] = p->data[m];
}
}
}
}
这个代码是一个很大的错误,'我'没有被初始化,'len'是未知的变量,'tmp'没有被使用,'newlen'没有被使用,'双重无限'...这个代码不应该根本编译 – 2015-04-03 23:52:04
确保'newlength'不是'1'。更好,但确保它是两个幂 – 2015-04-03 23:55:38
此代码不编译。在尝试解决运行时错误(如分段错误)之前:启用编译器错误和警告,修复所有报告的内容,并确保发布准确的代码。 – 2015-04-04 00:15:35