4

任何人都知道 ino_t 类型的占位符是什么?我正在尝试使用 printf 将其打印出来,并尝试了 %d、%i、%s 等,但没有成功。

printf( " file name = %s, i-node number=**%d**\n", direntp->d_name, direntp->d_ino);

warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘__ino_t’ [-Wformat]

请假设我的其他代码是正确的。大多数示例仅显示如何打印名称,而不是 inode 编号。我也搜索了很多地方。

提前致谢

4

3 回答 3

7

如果您知道类型是整数,则可以将其强制转换为unsigned long long,然后使用%llu

printf( " file name = %s, i-node number=%llu\n",
       direntp->d_name, (unsigned long long)direntp->d_ino);
于 2013-10-04T10:58:51.197 回答
6

为了记录:那些被称为“转换说明符”。

据我所知,没有ino_t. 如果您确定它是一个整数,则将其转换为unsigned long long并使用"%llu".

于 2013-10-04T10:58:51.533 回答
-2

ino_t 是 typedef 到 unsigned long。所以打印相同的限定符是 %lu。

于 2013-10-04T11:09:39.200 回答