2010-01-19 61 views
1

所以我想复制一个字符指针,问了一个朋友,他说要使用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

在你的第二个行:

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

存在虚假=迹象。

修复该问题后,您的电话无论如何都是不正确的。 charFilenameAndPathstrtok()的返回值,因此它必须是char *。因此,您正在复制sizeof(char *)字节到charFilename,您可能需要strlen(charFilenameAndPath)+1字节(或者您可以使用strcpy())。无论如何,你应该确保strtok()没有返回NULL,并且charFilename有足够的空间。

2

memcpy后跟=,不应该。该错误消息表示您正在尝试为符号memcpy分配新值,这不是您想要执行的操作。

相关问题