我想複製C(Windows)中包含空值的字符串。我需要一個函數來傳遞緩衝區的長度,這樣NULL字符就沒有意義了。我發現StringCbCopy函數,但它仍然停在第一個NULL字符處。複製內部爲空的字符串
0
A
回答
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可能會成爲這樣的情況下你最好的朋友。
通過字符串的定義,它由NUL分隔,除了終止符外,沒有NUL。 – user611775 2011-02-14 22:21:37