C-从字节数组的一部分获取字符
如何从字节数组的一部分获取字符数组或字符指针?假设我在字节数组中有一个可变大小的字符串,它从18个字节开始,从数组的末尾到4个字节结束。我怎么能得到这个 编辑:C-从字节数组的一部分获取字符,c,pointers,char,bytearray,C,Pointers,Char,Bytearray,如何从字节数组的一部分获取字符数组或字符指针?假设我在字节数组中有一个可变大小的字符串,它从18个字节开始,从数组的末尾到4个字节结束。我怎么能得到这个 编辑: 多特呢?我应该在字节数组中有点,但当我用memcpy复制时,我得到的字符串没有点。如何修复此问题?用谷歌搜索memcpy的使用。这将满足你的问题 const char *buffer = "I AM A VERY VERY VERY VERY VERY VERY VERY VERY BIG STRING"; char buffer2[4
多特呢?我应该在字节数组中有点,但当我用memcpy复制时,我得到的字符串没有点。如何修复此问题?用谷歌搜索
memcpy
的使用。这将满足你的问题
const char *buffer = "I AM A VERY VERY VERY VERY VERY VERY VERY VERY BIG STRING";
char buffer2[4];
memcpy(buffer2, (buffer+18), 4);
范妮是你姨妈。你可以用它来复制任意范围的字节:
const int index1 = 18; // start index in src
const int index2 = 252; // end + 1 index in src
char src[256]; // source array
char dest[256]; // destination array
memcpy(dest, &src[index1], index2 - index1);
// copy bytes from src[index1] .. src[index2 - 1]
// inclusive to dest[0] .. dest[index2 - index1 - 1]
这将从
src
复制从索引18到251的字节,并将它们存储在dest
要提取数组的一部分,可以使用memcpy
#include <string.h>
char dst[4];
/* Here, we can assume `src+18` and `dst` don't overlap. */
memcpy(dst, src + 18, 4);
#包括
char-dst[4];
/*在这里,我们可以假设'src+18'和'dst'不重叠*/
memcpy(dst,src+18,4);
C11(n1570),§7.24.2.1memcpy
功能
memcpy
函数将由s2
指向的对象中的n个字符复制到
s1
指向的对象。如果复制发生在重叠的对象之间,则该行为
没有定义
memcpy(目的地、来源、计数)强>
- 目的地=存储区(!重要的目的地大小>=计数)
- Source=保存要复制的数据的数组(默认起始索引=0,但
可以跳过Source+n
字节(您不应该超出源数组)n
- 计数=将复制多少字节
一个小警告:如果目标与源相同,则必须保存索引中的所有操作数。您在使用
memcpy(dest,index2-index1,&src[index1])时遇到了什么困难?
partI我认为您在memcpy中交换了第二个和第三个参数,但这没有问题。我又遇到了一个问题,我在有问题的编辑中描述了这个问题,请看它。我试着循环,一个字节一个字节地复制。我忘了memcpy。你说的“点”是什么意思?是的,memcpy有帮助,但我很少扩展我的问题。请看上面。