0

ある配列を別の配列にコピーする必要があります。どちらも 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* です

4

3 に答える 3

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++;
  }
}
于 2013-05-04T02:16:30.210 に答える
0

をインクリメントしたa[i] にテストしていますi。これは、まだ割り当てられていないことを意味しますa[i]。をチェックする必要があるかもしれませんb[i] != -1

于 2013-05-04T02:17:45.403 に答える
0

配列 b のサイズが配列 a と等しいと仮定しましょう。

void copy(int *a, int *b)
{
    int i=0;

    while(b[i]!=-1)  
    {
        a[i]=b[i];
        i++;
    }
}
于 2013-05-04T02:23:04.220 に答える