5

ソース ファイルfile1と宛先ファイルがありますfile2。ここでは、コンテンツを から に移動する必要があり file1ますfile2

そのため、最初に検証を行う必要があります。

  1. ソースファイルが存在するかどうかを確認する必要がありますか? これを使用して確認できます:

    fp = fopen( argv[1],"r" );
    if ( fp == NULL )
    {
        printf( "Could not open source file\n" );
        exit(1);
    } 
    
  2. 次に、ソースファイルにコンテンツがあるかどうかを確認する必要がありますか? 空の場合は、エラー メッセージをスローする必要があります。

これは私が今まで試したことです。

4

7 に答える 7

5

読むべき文字があるかどうか見てください

int c = fgetc(fp);
if (c == EOF) {
    /* file empty, error handling */
} else {
    ungetc(c, fp);
}
于 2012-11-26T13:53:11.340 に答える
3
fseek(fp, 0, SEEK_END); // goto end of file
if (ftell(fp) == 0)
 {
      //file empty
 }
fseek(fp, 0, SEEK_SET); // goto begin of file
// etc;

ftell と例のリファレンス

fseek と例のリファレンス

于 2012-11-26T13:52:27.460 に答える
0

データを開いてファイルの各バイトをカウントするのは面倒です。オペレーティング システムに、使用するファイルの詳細を提供するよう依頼することをお勧めします。マイクが以前言ったように、API はオペレーティング システムに依存します。

于 2012-11-26T14:45:10.673 に答える
0

ファイルサイズ> 0かどうかを確認できます

ファイルの存在を確認するコードの後 (ファイルを閉じる前)、次のコードを追加します。

   size = 0
    if(fp!=NULL)
    {
        fseek (fp, 0, SEEK_END);

        size = ftell (fp);
        rewind(fp);

    }
    if (size==0)
    {
      // print your error message here
     }
于 2012-11-26T13:45:57.427 に答える