私は現在、システムプログラミングの宿題を書いていますが、ある部分では、ディレクトリ内のファイルの情報を取得する必要があります。
ファイルの統計には、型ctime()
を変換してポインタを返す関数があります。time_t
string
しかし、uid_t
とoff_t
タイプはどうですか?インターネットで検索したところ、機能が見つかりませんでした。または、機能がない場合は、その機能の実装方法を教えてください。
私は現在、システムプログラミングの宿題を書いていますが、ある部分では、ディレクトリ内のファイルの情報を取得する必要があります。
ファイルの統計には、型ctime()
を変換してポインタを返す関数があります。time_t
string
しかし、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_t
uid_t
types.h
unsigned 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*に変換できます。