2013-03-15 187 views
1

我有一个字符串包含二进制数据。 字符串的大小是4.其他函数向它写入数据。 每次,数据是不同大小的如下,获取字符串的多个'/ 000'字符的大小

buf[0] = '\037'; 
buf[1] = buf[2]=buf[3] ='\000'; 

buf[0] = '\037'; 
buf[1] = '\045'; 
buf[2]=buf[3] ='\000'; 

当我获得字符串的长度,我在上述情况下分别得到1和2。 我希望字符串的长度在所有情况下都是4。

我应该如何处理终止字符?

回答

3

每个C字符串函数都假定NULL字节'\ 0'表示字符串的结尾。您不能将具有空字节的字符串作为内容并使用标准的C字符串函数。

您将需要建立自己的字符串系统。请注意,您需要一些其他方式来确定您的字符串在哪里结束。

-2

尝试使用双引号来初始化字符串

buf[0] = "\037"; 
buf[1] = buf[2]=buf[3] ="\000"; 

什么u必须初始化是单引号

+0

'\ 0' 和 “\ 0” 字符 - 两者都是相同 – Swanand 2013-03-15 07:56:33

+0

是“\ 0 '和“\ 0”都相同,但“\ 037”和“\ 037”不一样 – hazzelnuttie 2013-03-15 07:57:40

相关问题