Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 功能。2个2D数组,第二个数组充满了0';s、 应用条件后,将整行从第一个二维数组复制到第二个二维数组_Arrays_C - Fatal编程技术网

Arrays 功能。2个2D数组,第二个数组充满了0';s、 应用条件后,将整行从第一个二维数组复制到第二个二维数组

Arrays 功能。2个2D数组,第二个数组充满了0';s、 应用条件后,将整行从第一个二维数组复制到第二个二维数组,arrays,c,Arrays,C,例如,我有两个数组,一个是 0 -1 1 0 1 0 -1 0 0 0 0 1 1 -1 0 0 0 0 -1 0 0 -1 0 1 0 第二个满是0。 当我满足条件a[I][j]=-1&&a[I][k]==1后,其中k=j+1,我需要复制整行并将其放入第二个数组中,因此结果应该是: 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 我已经为两个数组分配了内存,下面是我尝试过的代码部分,但它不起作用,它复制了整个数组 void copy_

例如,我有两个数组,一个是

0 -1 1 0 1
0 -1 0 0 0
0 1 1 -1 0
0 0 0 -1 0
0 -1 0 1 0
第二个满是0。 当我满足条件
a[I][j]=-1&&a[I][k]==1
后,其中k=j+1,我需要复制整行并将其放入第二个数组中,因此结果应该是:

0 -1 1 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 -1 0 1 0
我已经为两个数组分配了内存,下面是我尝试过的代码部分,但它不起作用,它复制了整个数组

void copy_row(int **a, int **b, int m){
    for(int i=0; i<m; i++){
        b[i]=a[i];
        
    }
}
int main(){
...
for(int i=0 ; i<n ; i++){
    for(int j=0 ; j<m ; j++){
        for(int k=j+1; k<m ; k++){
         
        if (a[i][j]==-1 && a[i][k]==1){
            copy_row(a,b,n);
         }
         
      }
     }
 }
void copy\u行(int**a、int**b、int m){

对于(int i=0;i如果要复制行,需要将当前行的索引传递给
copy\u row
,加上列数

来自main的电话可能是

// Notice that we pass index i and not n
copy_row(m, a, b, i);
复制行可以是:

void copy_row(int numOfColumns, int a[][numOfColumns], int b[][numOfColumns], int rowIndex) {
    for (int ii = 0, ii < numOfColumns, ++ii) {
        b[rowIndex][ii] = a[rowIndex][ii];
    }
}

请说明如何分配,这些指向指针的指针非常可疑,通常2D数组和指向指针的指针不兼容(指向
char
s的指针除外)。
char**
char*[]
可以互换,但
int**
int*[]
不是。@DavidRanieri谢谢你的评论,我编辑了答案。谢谢,也解决了这个问题。
for(int j = 0 ; j < m ; ++j) {
    if (a[i][j] == -1) {
        for(int k = j + 1; k < m ; ++k) {
            if (a[i][k] == 1) {
                copy_row(m, a, b, i);
                break;
            }
        }
        break;
    }
}