1

我有一个包含二进制数据的字符串。字符串的大小为 4。其他函数向其写入数据。每次,数据的大小都不同,如下所示,

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

或者

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

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

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

4

2 回答 2

3

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

您将需要构建自己的字符串系统。请注意,您将需要一些其他方法来确定字符串的结束位置。

于 2013-03-15T07:00:18.137 回答
-2

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

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

你初始化的是一个带单引号的字符

于 2013-03-15T07:33:01.843 回答