stat構造体
stat構造体のプロトタイプは<sys / stat.h> lN。特殊なデータの種類、これは<sys / types.h>にヘッダする必要があるからです。構造体STAT {
dev_t st_devフィールド; / *デバイスのIDファイルを含む- デバイス*のID /ファイル ino_t st_inoによって取得は、/ *数値-inodeノードinode番号* / mode_t st_modeの; / *保護-保護モード* /? nlink_t st_nlink; / *ナンバーの-ハードリンクこのファイルのチェーン番号(ハードワイヤード)* /接続されている / *所有者-userのID * /のユーザID、uid_t型ST_UID - ; gid_tの、st_gid *グループID / / *所有者のグループID / *デバイスとのdev_t st_rdevにID(もし特殊ファイル) -デバイス* /デバイス・ファイルの数 st_size off_tではの; / *合計サイズ(バイト単位) -バイト単位のファイルサイズ* / st_blocksizeはblksize_t、I / Oのための/ * BLOCKSIZEファイルシステム-システムブロックサイズ* / blkcnt_t st_blocks; / *割り当てられたブロックの数-占有ブロックファイル*の数/ st_atimeをtime_t型; / *最後のアクセスの時間-最新のアクセス時刻* / st_mtimeの両のtime_t; / *最終更新時刻-最終更新時刻* / time_t型ファイルのst_ctime、最終ステータス変更の/ *タイム- * / };
STAT構造が定義されていますデータファイルのさまざまな属性。だから、STAT関数は、ファイルまたはパスの属性情報を識別するために使用され、メモリに格納されます。STAT機能:関数プロトタイプ: int型のstat(
CONSTのchar *ファイル名//パスまたはファイルフォルダ
、メモリに格納された情報取得構造体スタット*のBUF //
);
この関数は、2つのパラメータを取り、最初のパラメータは、第二のパラメータ、ファイル名またはファイルパスでありますstat構造体のポインタまたはアドレスです。STAT関数属性情報は、構造をstatを、メモリに保存されるファイル名と一致します。
関数は、それ以外の場合は0を返す-1を返し、errnoに上の特定のエラーコードを成功します。
エラーコードの詳細:
EBADF:無効なファイルディスクリプタ
EFAULT:アドレス空間はアクセスできません
ELOOP:あまりにも多くのシンボリック出会いパス接続を横断するとき
ENAMETOOLONG:ファイルのパス名が長すぎます
ENOENT:パートアセンブリのパス名が存在しない場合、またはパス名が空の文字列です
ENOMEM:メモリ不足
ENOTDIR:パス名の一部のコンポーネントはディレクトリではありません
使用法:
#include <TIME.H> の#includeは<sys / types.h>に する#include <SYS / stat.h> の#include <stdio.hに> する#include <ERRNO.H> INTメイン(ボイド) { BUF _stat構造体。 int型の結果。 チャーtimebuf [26]。 char *ファイル名= "crt_stat.c"。 ERR errno_t; //データは"crt_stat.c"に関連付けられます: 結果= _stat(ファイル名、&bufが)。 //統計が有効であるかどうかを確認します。 場合(!結果= 0) { perrorは(「問題は、情報の取得」); スイッチ(errnoに) { ケースENOENT: のprintf(」 ブレーク; printf( "\ nは_statするパラメータが無効です。"); ブレーク; デフォルト: / *に到達すべきではありません。* / printfの( "_statで予期しないエラーが発生します。\ n"); } } 他 { //出力統計情報の一部: のprintf( "ファイルサイズ:%ldは\ nを"、buf.st_size)。 printf( "ドライブ:%のC:\ nを"、buf.st_dev + 'A')。 ERR = ctime_s(timebuf、26、&buf.st_mtime)。 (ERR)であれば { のprintf( "ctime_sに無効な引数")。 出口(1)。 } printf( "時間改変:%のS"、timebuf)。 次のように出力されます。 ファイルサイズ:732 ドライブ:C: タイム更新:2月7日(木)夜02時39分36秒2002
11時58分15秒