2010-01-19 55 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分配新值,這不是您想要執行的操作。

相關問題