c - 使用 memcpy 将一维数组复制到一行二维数组
问题描述
我正在尝试使用 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;
}
推荐阅读
- python-3.x - 将此 For 循环转换为列表推导
- c# - 为 C# 生成 lua 参数
- javascript - 如何在angularjs脚本中添加目标空白
- quickfixj - 发送后记录传出的 FIX 消息
- solidity - 尝试在 for 循环中返回一个数组
- c# - IEnumerable
使用 c# 在函数内访问 T 的属性 - node.js - Puppeteer - 将空内容返回到我的抓取中
- powerbi - 根据 PowerBI 中先前的单元格值将数据提取到列
- python - 用 Python 填充模板 Word 中的表格(DocxTemplate,Jinja2)
- flutter - 如何使元素的动态列表水平显示到每个 6 个索引,然后在颤动中垂直显示