我在嘗試調整數組的大小以包含長度爲「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