C++:如何使用名称长度从内存中的字符指针取消引用多个字符
这是代码:
errorLog.OutputSuccess("Filename reference: %c", *t_current_node->filename);
它当然只输出第一个字符。如果我添加类似 ->filename[nameLen]
的内容,其中 nameLen 是有效整数(例如 10),它会显示:
* 的操作数必须是指针。
谢谢!
Here is the code:
errorLog.OutputSuccess("Filename reference: %c", *t_current_node->filename);
It of course only outputs the first character. If I add something like ->filename[nameLen]
where nameLen is a valid integer of say 10 it says:
operand of * must be a pointer.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果字符串以
\0
结尾,则可以使用%s
代替:您还需要传递文件名的内存地址,因此丢失
*
符号。If the string is terminated with
\0
, you could use%s
instead:You also will need to pass the memory address of filename, so lose the
*
symbol.使用 %s,并删除
*
Use %s, and remove the
*
%c
打印单个字符。%s
打印一个字符串:直到终止\0
为止的所有字符。%.10s
打印字符串的前 10 个字符(如果字符串较短,则更少)%.*s
接受两个参数,一个指示要打印的长度的整数和一个字符串指针。最后一种情况的示例:
printf("文件名引用:%.*s", nameLen, t_current_node->filename);
%c
prints a single character.%s
prints a string: all characters up to the terminating\0
.%.10s
prints the first 10 characters of a string (or less, if the string is shorter)%.*s
takes two arguments, an integer indicating the length to print, and a string pointer.Example for the last case:
printf("Filename reference: %.*s", nameLen, t_current_node->filename);