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 は unsigned long への typedef です。したがって、同じものを出力する修飾子は %lu です。

于 2013-10-04T11:09:39.200 に答える