【发布时间】:2015-04-07 09:47:52
【问题描述】:
我想使用memcpy,但在我看来它是从一开始就复制数组?
我希望从A[a] 复制到A[b]。所以,我找到了另一种方法,
void copy_file(char* from, int offset, int bytes, char* to) {
int i;
int j = 0;
for (i = offset; i <= (offset+bytes); i++) to[i] = from[j++];
}
我遇到了段错误,但我不知道我从哪里得到这个段错误? 每个条目包含 8 个字节,所以我的第二次尝试是
void copy_file(char* from, int offset, int bytes, char* to) {
int i;
int j = 0;
for (i = 8*offset; i <= 8*(offset+bytes); i++) to[i] = from[j++];
}
但仍然有段错误。如果您需要更多信息,请随时询问!
【问题讨论】:
-
memcpy 没有数组的概念,它以源地址和目标地址作为参数复制多个字节。
-
如果
bytes是要复制的字节数,那么你复制的太多了;结束条件应该是<而不是<= -
请说明
offset是from的偏移量,还是to的偏移量。 (目前您正在从from的开头读取,并将偏移量应用于to)。如果您可以包含一些调用此函数并显示预期输入和输出的代码,那就更好了。
标签: c arrays pointers segmentation-fault memcpy