私は現在、システムプログラミングの宿題を書いていますが、ある部分では、ディレクトリ内のファイルの情報を取得する必要があります。
ファイルの統計には、型ctime()を変換してポインタを返す関数があります。time_tstring
しかし、uid_tとoff_tタイプはどうですか?インターネットで検索したところ、機能が見つかりませんでした。または、機能がない場合は、その機能の実装方法を教えてください。
私は現在、システムプログラミングの宿題を書いていますが、ある部分では、ディレクトリ内のファイルの情報を取得する必要があります。
ファイルの統計には、型ctime()を変換してポインタを返す関数があります。time_tstring
しかし、uid_tとoff_tタイプはどうですか?インターネットで検索したところ、機能が見つかりませんでした。または、機能がない場合は、その機能の実装方法を教えてください。
どちらも算術型として定義されており(http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html)、実際には正で積分されています。したがって、unsigned long longにキャストし、「%llu」を指定したsprintfを使用して文字列に変換できます。
size_tとoff_tは単に符号なし整数型です。(編集:off_t長いですか?レッスンは、ヘッダーを確認してください!)
したがって、sprintf(または何でも)を使用して、「%i」形式指定子を使用してそれらを変換します。
編集時:がらくた、あなたは私が答えている間にに変わっsize_tた。で定義されています; あっち見て。(これも符号なし積分型ですが、。)uid_tuid_ttypes.hunsigned short
Linuxのsnprintf()は、タイプの値に対して「z」フォーマット指定子をサポートしますsize_t。これがどれほどポータブルかわからない場合は、「準拠」セクションを注意深く調べる必要があります。
の場合off_t、最大の符号なし整数型にキャストする必要がある場合があります。つまりunsigned long、「lu」指定子を使用します。
off_tはlong int:format = "%ld"
size_tはunsigned int:format = "%u"
これらの形式をsprintf関数で使用して、char*に変換できます。