【发布时间】:2020-04-02 05:13:42
【问题描述】:
我正在尝试使用 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 编码的正确方法是什么吗?
【问题讨论】:
-
在第二个
for中,你得到的是i<5而不是j<5,所以循环永远不会结束 -
@DenisSheremet 非常感谢它现在的工作。在这里发布问题之前,我应该更加小心。
-
只是证明你是人类而不是一些自动化的bot...