我想使用memcpy而不是for循环将一个缓冲区的第二个元素复制到另一个缓冲区。
for(i=1,j=0; i<12; i++,j++)
{
buff[j] = buffer[i];
}
任何人都可以建议我
答案 0 :(得分:1)
答案 1 :(得分:1)
假设它们都是“真正的”数组,因此不重叠:
memcpy(buff, buffer + 1, 11 * sizeof *buff);
这也假设它们都具有相同的类型,但使用sizeof
来确定项目大小是什么,因此无论数组的实际类型如何,它都能正常工作。
答案 2 :(得分:0)
void *memcpy(void *dest, const void *src, size_t n);
dest
是buff
src
来自buffer
中的第二个元素
n
是11(= 12-1),所以:
memcpy(buff, buffer+1, 11);
如果buff
和buffer
大于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);