使用memcpy从缓冲区的第二个元素复制到其他缓冲区

时间:2013-12-12 11:21:45

标签: c

我想使用memcpy而不是for循环将一个缓冲区的第二个元素复制到另一个缓冲区。

for(i=1,j=0; i<12; i++,j++)
{
  buff[j] = buffer[i];
}

任何人都可以建议我

5 个答案:

答案 0 :(得分:1)

怎么样:

memcpy(buff, buffer + 1, 11 * sizeof (type) );

其中type类型为buffbuffer

memcpy documentation

答案 1 :(得分:1)

假设它们都是“真正的”数组,因此不重叠:

memcpy(buff, buffer + 1, 11 * sizeof *buff);

这也假设它们都具有相同的类型,但使用sizeof来确定项目大小是什么,因此无论数组的实际类型如何,它都能正常工作。

答案 2 :(得分:0)

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

destbuff src来自buffer中的第二个元素 n是11(= 12-1),所以:

memcpy(buff, buffer+1, 11);

如果buffbuffer大于char,则需要调整大小:

memcpy(buff, buffer+1, 11 * sizeof buffer[0]);

答案 3 :(得分:0)

int main ()
{
   char buffer[12] = "ABDCEFGHIJKL";
   char buff[12];
   memcpy(buff, buffer+1, strlen(buffer));
   return(0);
}

/ *尝试这可能有用....

答案 4 :(得分:0)

可能这可以帮到你。

memcpy(&amp; buffer,&amp; buffer [1],sizeof(buffer)-1);