2011-02-14 48 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可能会成为这样的情况下你最好的朋友。