2011-02-14 63 views
0

我想複製C(Windows)中包含空值的字符串。我需要一個函數來傳遞緩衝區的長度,這樣NULL字符就沒有意義了。我發現StringCbCopy函數,但它仍然停在第一個NULL字符處。複製內部爲空的字符串

+0

通過字符串的定義,它由NUL分隔,除了終止符外,沒有NUL。 – user611775 2011-02-14 22:21:37

回答

14

由於您知道長度,請使用memcpy()

+1

+1正確。既然你沒有處理「以null結尾的字符串」,你不應該使用那些期望它們的函數。將「字符串」作爲內存緩衝區進行操作。 – tenfour 2011-02-14 17:48:45

0

應該很容易編寫自己的功能來做到這一點。如果您知道字符串的長度,只需創建一個具有指定長度的char []或char *,並逐個複製字符。

+1

或者不要,並且使用C89函數 - memcpy。 – 2011-02-14 18:05:13

1

這裏是代碼的快速比特,可以幫助:

char array1[5] = "test", array2[5]; 
int length = 5; 
memcpy(array2, array1, length*sizeof(char)); 
//the sizeof() is redundant in this because each char is a byte long 
//but it is useful if you are working with other datatypes 

的memcpy可能會成爲這樣的情況下你最好的朋友。