C-从字节数组的一部分获取字符

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

如何从字节数组的一部分获取字符数组或字符指针?假设我在字节数组中有一个可变大小的字符串,它从18个字节开始,从数组的末尾到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.1
memcpy
功能
memcpy
函数将由
s2
指向的对象中的n个字符复制到
s1
指向的对象。如果复制发生在重叠的对象之间,则该行为 没有定义

memcpy(目的地、来源、计数)

  • 目的地=存储区(!重要的目的地大小>=计数)
  • Source=保存要复制的数据的数组(默认起始索引=0,但
    Source+n
    可以跳过
    n
    字节(您不应该超出源数组
  • 计数=将复制多少字节

一个小警告:如果目标与源相同,则必须保存索引中的所有操作数。

您在使用
memcpy(dest,index2-index1,&src[index1])时遇到了什么困难?
partI我认为您在memcpy中交换了第二个和第三个参数,但这没有问题。我又遇到了一个问题,我在有问题的编辑中描述了这个问题,请看它。我试着循环,一个字节一个字节地复制。我忘了memcpy。你说的“点”是什么意思?是的,memcpy有帮助,但我很少扩展我的问题。请看上面。