我有一个u_chars数组,我想使用printf打印它。我不知道数组的大小:
u_char *ip_p;
printf("%s", ip_p); // EXC_BAD_ACCESS D:<我想把这个打印出来。我该怎么做呢?
发布于 2010-12-10 23:52:59
这是不可能做到的。指针不会神奇地包含有关指向的数据大小的信息。
如果没有约定(终止符字节或某处编码的长度),您就无法知道有多少数据是有效的,从而无法知道要打印多少数据。
发布于 2010-12-11 00:01:15
如果你不知道大小,你怎么能指望printf知道呢?修复您的代码以将大小作为附加参数传递。然后,您可以使用:
printf("%.*s", size, buf);但是,看起来您的数据可能不是文本,而是二进制。如果是这样的话,我质疑用printf打印它的价值...
发布于 2010-12-10 23:53:50
如果ip_p是NUL终止的,那么您的代码将正常工作。看一下代码片段中的注释,我会说它并没有终止...
https://stackoverflow.com/questions/4410550
复制相似问题