我必须将一个数组复制到另一个数组。它们都是int *形式。我必须复制它直到索引读取-1,但它继续复制。我尝试使用调试器。达到-1后,它继续复制其余顶点中的数据。
void copy(int *a, int *b)
{
int i=0;
while(a[i]!=-1)
{
if(a[i]==-1)
break;
//for( i=0; a[i]!=-1; i++)
a[i]=b[i];
i++;
}
a[i]=b[i];
}
copy(temp->patharray,num);
patharray和num都是int *
答案 0 :(得分:2)
看起来你要复制,直到你在源数组中有-1
,但你的所有检查都是针对目标数组中的先前值
while(b[i]!=-1)
{
a[i] = b[i];
i++;
}
附注:拥有良好的变量名称可使代码更易于阅读和理解 - 请尝试
void copy(int *destination, int *source, int maxLength)
{
int currentIndex = 0;
while(currentIndex < maxLength && source[currentIndex] != -1)
{
destination[currentIndex] = source[currentIndex];
currentIndex++;
}
}
答案 1 :(得分:0)
您在{/ 1>增加a[i]
之后正在测试i
。这意味着您尚未分配a[i]
。可能是您应该检查b[i] != -1
。
答案 2 :(得分:0)
假设数组b的大小等于数组a,
void copy(int *a, int *b)
{
int i=0;
while(b[i]!=-1)
{
a[i]=b[i];
i++;
}
}