类型转换语法不清楚
我正在读一本书,遇到了一个从 /proc
文件中读取条目的程序。 他们提到的程序有以下行
printf("%.*s", (int) n, line);
我不清楚上面的行的含义
- 是什么类型的打印如果上面使用
"%.*s
而不是%s
代码可以请阅读此处
I was reading a book and came across a program to read entries from a /proc
file.
The program which they mentioned has following line
printf("%.*s", (int) n, line);
I am not clear with meaning of above line
- what type of print if above
"%.*s
used instead of%s
The code can be read here
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
转换表达式 (int) n 将
n
的值转换为int
类型。这是因为格式说明符需要一个普通的int
,并且我假设(因为您没有包含它)变量n
具有不同的类型。由于不同的类型(例如
size_t
)可能具有其他大小,因此如果未显式转换为int,则传递给
。printf()
的参数会产生问题The cast expression (int) n converts the value of
n
to typeint
. This is because the formatting specifier requires a plainint
, and I assume (since you didn't include it) the variablen
has a different type.Since a different type, like
size_t
might have another size, it would create problems with the argument passing toprintf()
if it wasn't explicitly converted toint
.摘要来自此处:
所以这会从行字符串中打印最多 n 个字符。
Abstract from here:
So this prints up to n characters from line string.