14

Cプログラムを使用してtxtファイルに文字列を出力しようとしています

ただし、txt ファイルに書き込む権限があるかどうかを確認する必要があります。ない場合は、エラー メッセージを出力する必要がありますか? ただし、ファイルを正常に開いたかどうかを検出する方法がわかりません。誰かがこれについて助けてくれますか? ありがとう

コードはこんな感じ

File *file = fopen("text.txt", "a");

fprintf(file, "Successfully wrote to the file.");

//TO DO (Which I don't know how to do this)
//If dont have write permission to text.txt, i.e. open was failed
//print an error message and the numeric error number

誰か助けてくれてありがとう、どうもありがとう

4

3 に答える 3

20

fopen の戻り値を確認する必要があります。マニュアルページから:

RETURN VALUE
   Upon successful completion fopen(), fdopen() and freopen() return a FILE pointer.
   Otherwise, NULL is returned and errno is set to indicate the error.

再度、書き込みが成功したかどうかを確認するには、fprintf または fwrite の戻り値を確認します。失敗の理由を出力するには、errno をチェックするか、perror を使用してエラーを出力します。

f = fopen("text", "rw");
if (f == NULL) {
    perror("Failed: ");
    return 1;
}

perror は次のようなエラーを出力します (権限がない場合):

Failed: Permission denied
于 2013-02-04T04:14:32.830 に答える
11

エラー チェックを実行して、fopen と fprintf の呼び出しが成功したかどうかを確認できます。

fopen の戻り値は、成功した場合はファイル オブジェクトへのポインターであり、失敗した場合は NULL ポインターです。NULL 戻り値を確認できます。

FILE *file = fopen("text.txt", "a");

if (file == NULL) {
     perror("Error opening file: ");
}

同様に、fprintf はエラー時に負の数を返します。if(fprintf() < 1)チェックを行うことができます。

于 2013-02-04T04:18:07.303 に答える
1
f = fopen( path, mode );
if( f == NULL ) {
  perror( path );
}
于 2013-02-04T04:15:03.223 に答える