类型转换语法不清楚

发布于 2024-10-26 06:04:33 字数 334 浏览 1 评论 0原文

我正在读一本书,遇到了一个从 /proc 文件中读取条目的程序。 他们提到的程序有以下行

printf("%.*s", (int) n, line);

我不清楚上面的行的含义

  1. 是什么类型的打印如果上面使用 "%.*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

  1. what type of print if above "%.*s used instead of %s

The code can be read here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

相权↑美人 2024-11-02 06:04:51

转换表达式 (int) n 将 n 的值转换为 int 类型。这是因为格式说明符需要一个普通的 int,并且我假设(因为您没有包含它)变量 n 具有不同的类型。

由于不同的类型(例如 size_t)可能具有其他大小,因此如果未显式转换为 int,则传递给 printf() 的参数会产生问题

The cast expression (int) n converts the value of n to type int. This is because the formatting specifier requires a plain int, and I assume (since you didn't include it) the variable n has a different type.

Since a different type, like size_t might have another size, it would create problems with the argument passing to printf() if it wasn't explicitly converted to int.

北陌 2024-11-02 06:04:45

摘要来自此处

.* - 精度未指定
格式字符串,但作为
附加整数值参数
在必须是的参数之前
已格式化。

所以这会从行字符串中打印最多 n 个字符。

Abstract from here:

.* - The precision is not specified in
the format string, but as an
additional integer value argument
preceding the argument that has to be
formatted.

So this prints up to n characters from line string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文