打印一组u_chars

时间:2010-12-10 15:47:15

标签: c printf

我有一个u_chars数组,我想用printf打印它。我不知道数组的大小:

u_char *ip_p;
printf("%s", ip_p); // EXC_BAD_ACCESS D:<

我想打印这个。我怎么能这样做?

4 个答案:

答案 0 :(得分:6)

无法做到。指针不会神奇地包含有关指向的数据大小的信息。

如果没有约定(终结符字节或某处编码的长度),则无法知道有多少数据有效,因此无法打印多少数据。

答案 1 :(得分:1)

如果您不知道尺寸,您希望printf如何知道?修复代码以将大小作为附加参数传递。然后你可以使用:

printf("%.*s", size, buf);

然而,您的数据看起来可能不是文本而是二进制文件。如果是这样,我质疑用printf ...

打印它的价值

答案 2 :(得分:0)

如果ip_p以NULL结尾,则代码有效。查看代码片段中的注释我会说它没有终止...

答案 3 :(得分:0)

如果您不知道数据的大小,您希望如何使用它?尺寸必须在某个地方可用,否则如何放在那里!?您必须知道大小或具有哨兵值,例如零字符。

如果它不是nul终止,则“%s”是不合适的格式说明符。此外,如果u_char值不是所有可打印字符,则不应使用%s甚至%c。您可以使用%c并将非打印字符替换为另一个。