構造体スタット機能と構造の効果

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秒

 

おすすめ

転載: www.cnblogs.com/crine/p/11640908.html