如何使用 C 字符串包含多个空字符 \x00。
问问题
1135 次
3 回答
9
C 的字符串函数(例如strlen()
,printf()
等)假定缓冲区将以空值结尾。如果您有一个包含多个 0x00 字符的缓冲区,那么您不能使用任何将 0x00 视为空字符的函数。
因此,您可以使用- 将内存字节从一个地方移动到另一个地方,而不是使用例如strcpy()
(或),而不是依赖于这种以空值终止的行为。strncpy()
memcpy()
于 2013-01-20T17:51:56.840 回答
3
AC 字符串只是一个以空字符结尾的字符数组。但是,如果将其视为数组,则它可以包含内部空字符:
char data[4] = { 'x', '\0', 'y', '\0' };
但是,您必须小心,因为大多数标准库函数都不起作用,因为它们期望 C 字符串以第一个空字符结尾。
例如,strlen(data)
将在上面的示例中返回 1,因为它在第一个空字符之后停止。
于 2013-01-20T17:51:24.037 回答
2
你所要做的就是像
char* data = (char*)malloc( 8 ) ; // allocate space for 8 bytes
memset( data, 0, 8 ) ; // set all 8 bytes to 0's
于 2013-01-20T17:48:42.673 回答