c - 将二维数组中的所有非零项保存到另一个一维数组中

标签 c arrays function

A 是一个二维数组,我想将它的所有非零项存储在一个名为 B 的新一维数组中...这是我调用的函数这样做,但它使程序崩溃,我不知道我做错了什么?

int doSomething(int A[N][N], int B[ ], int C[ ]){

    int i,j;
    int k=0;
    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
            if (A[i][j] != 0){
                B[k]= A[i][j];
                k++;
            }
        }
    }
    for (i = 0; i < 4; i++) {
        printf("%d ", B[i]);
    }
}

最佳答案

问题是 4里面for(i = 0; i < 4; i++) .大概是B的长度array 小于 4,因此会导致错误。因为您正在访问越界索引。所以你应该使用 for (i = 0; i < k; i++)相反。

关于c - 将二维数组中的所有非零项保存到另一个一维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777923/

相关文章:

C函数查找彼此不同的行

c - 为什么在使用函数时无法正确添加到链表?

javascript - 比较两个表并不总是有效

arrays - 无法将数组类型查询字符串解析为对象列表

c# - C# 中的 IsNumeric 函数

c - 限制数组大小的目的是什么?

c - 函数 sqlite3_open 不是打开 db 文件,而是创建一个

arrays - Swift 3 - 从 plist 中获取所有数组中的所有项目

javascript - 为我的 JS 函数获取 NaN 作为结果。谁能解释为什么?

c++ - 这个回调有什么问题?