gpt4 book ai didi

在 C 中复制无符号字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:08 24 4
gpt4 key购买 nike

我想使用 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++];
}

但还是段错误。如果您需要更多信息,请随时询问!

最佳答案

I'm getting seg faults but I don't know where I am getting this seg fault from?

主要建议:学习使用调试器。它提供有关错误指令的有用信息。


为了回答您对上述问题中显示的代码片段的查询,

  1. 在取消引用之前,检查传入的指针(tofrom)是否为 NULL
  2. 检查所用索引的边界限制。目前它们可以超出分配的内存。

正确使用memcpy():

根据 man pagememcpy()的签名表示

void *memcpy(void *dest, const void *src, size_t n);

它将 n 个字节从 src 的地址指针复制到 dest 指向的地址。

还有一个非常非常重要的点要注意:

The memory areas must not overlap.

所以,要将 A[a] 复制到 A[b],你可以这样写

memcpy(destbuf, &A[a], (b-a) );

关于在 C 中复制无符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29488611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com