2

这是代码:

errorLog.OutputSuccess("Filename reference: %c", *t_current_node->filename);

它当然只输出第一个字符。如果我添加类似->filename[nameLen]nameLen 是 10 的有效整数的东西,它会说:

* 的操作数必须是指针。

谢谢!

4

3 回答 3

7

如果字符串以 结尾\0,您可以%s改用:

errorLog.OutputSuccess("Filename reference: %s", t_current_node->filename);

您还需要传递文件名的内存地址,因此丢失*符号。

于 2011-04-28T01:31:27.170 回答
2

使用 %s,然后删除*

 errorLog.OutputSuccess("Filename reference: %s", t_current_node->filename);
于 2011-04-28T01:31:29.123 回答
0
  • %c打印单个字符。
  • %s打印一个字符串:直到终止符的所有字符\0
  • %.10s打印字符串的前 10 个字符(或更少,如果字符串较短)
  • %.*s接受两个参数,一个指示要打印的长度的整数和一个字符串指针。

最后一种情况的示例:

printf("Filename reference: %.*s", nameLen, t_current_node->filename);

于 2011-04-28T08:52:13.080 回答