使用 memcpy 将一维数组复制到一行二维数组

标签 c arrays

我正在尝试使用 memcpy 将一维数组复制到二维数组的特定行。我尝试在 OnlineGDB 上编译以下代码,但它打印垃圾值,然后给出段错误。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {
     int arr1[5] = {34, 45, 89,123,56};
     int arr2[2][5];
     memcpy(arr2[0],arr1,sizeof(arr2[0]));
     // arr1[5] = {89,45,90,15,23};
     memcpy(arr2[1],arr1,sizeof(arr2[1]));

     for(int i=0;i<2;i++) {
        for(int j=0;i<5;j++) {
            printf("%d ",arr2[i][j]);
        }
        printf("\n");
     }
     return 0;
}

有人可以解释一下使用 memcpy 进行编码的正确方法是什么吗?

最佳答案

问题出在内部循环( i<5 )的条件中。

这是一个修复(删除了硬编码)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
     int arr1[] = {34, 45, 89, 123, 56};
     int arr2[2][sizeof arr1 / sizeof *arr1];
     memcpy(arr2[0], arr1, sizeof arr1);
     memcpy(arr2[1], arr1, sizeof arr1);

     for (int i = 0; i < sizeof arr2 / sizeof *arr2; i++) {
        for (int j = 0; j < sizeof arr2[i] / sizeof *arr2[i]; j++) {
            printf("%d ", arr2[i][j]);
        }
        printf("\n");
     }
     return 0;
}

关于使用 memcpy 将一维数组复制到一行二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59243140/

相关文章:

c - 在结构中递增指向数组的指针

python - C 元与 cmake 依赖问题

c - 如何从 Go 代码调用 Java Native Interface C 函数?

javascript - ajax 调用缺少参数

c - 将提取的帧名称存储在数组中 - ffmpeg

java - 命令行参数和命令行参数数组的长度

c - Printf 在 C 中错误地显示数字/字符

android - 膨胀类android.support.v7.widget.FitWindowsFrameLayout时出错

javascript - 从此对象中选择特定属性值时遇到问题

java - 如果比较对象数组索引和对象,如何正确使用 equals()?