所以我想复制一个字符指针,问一个朋友,他说要用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
答案 0 :(得分:2)
memcpy
之后是=
,不应该是memcpy
。错误消息显示您正在尝试为符号{{1}}分配新值,这不是您想要做的。
答案 1 :(得分:2)
在你的第二行:
memcpy=(charFilename,charFilenameAndPath, sizeof(charFilenameAndPath));
有一个虚假的=
符号。
一旦你解决了这个问题,你的电话就不正确了。 charFilenameAndPath
是strtok()
的返回值,因此它必须是char *
。因此,您要将sizeof(char *)
个字节复制到charFilename
,您可能需要strlen(charFilenameAndPath)+1
个字节(或者您可以使用strcpy()
)。在任何情况下,您都应确保strtok()
未返回NULL
且charFilename
有足够的空间。