ino_t的占位符

时间:2013-10-04 10:54:47

标签: c linux

任何人都知道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编号。 我也搜过很多地方。

提前致谢

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:-1)

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