尝试使用memcpy复制char指针,收到错误

时间:2010-01-19 06:17:19

标签: c char memcpy

所以我想复制一个字符指针,问一个朋友,他说要用memcpy ......所以我试着这样做:

charFilenameAndPath=strtok(filename,".");
memcpy=(charFilename,charFilenameAndPath, sizeof(charFilenameAndPath));

并且编译器正在吐出这个:

uTrackSpheres.cpp:176: error: assignment of function ‘void* memcpy(void*, const void*, size_t)’
uTrackSpheres.cpp:176: error: cannot convert ‘unsigned int’ to ‘void*(void*, const void*, size_t)throw ()’ in assignment

我也尝试过使用strlen而不是sizeof

2 个答案:

答案 0 :(得分:2)

memcpy之后是=,不应该是memcpy。错误消息显示您正在尝试为符号{{1}}分配新值,这不是您想要做的。

答案 1 :(得分:2)

在你的第二行:

memcpy=(charFilename,charFilenameAndPath, sizeof(charFilenameAndPath));

有一个虚假的=符号。

一旦你解决了这个问题,你的电话就不正确了。 charFilenameAndPathstrtok()的返回值,因此它必须是char *。因此,您要将sizeof(char *)个字节复制到charFilename,您可能需要strlen(charFilenameAndPath)+1个字节(或者您可以使用strcpy())。在任何情况下,您都应确保strtok()未返回NULLcharFilename有足够的空间。