fopenとfopen_s

VC2008の警告レベル最大だとfopenは警告が出る。

fopen_sの方を使えと。

ということでそれぞれの書き方を以下に示す。

fopenの場合

FILE *fp;

if ( (fp = fopen("foo.txt","r")) == NULL ) {
    // エラー処理
}

fopen_sの場合

FILE *fp;
errno_t error;

if ( (error = fopen_s(&fp1,"foo.txt","r")) != 0 ) {
    // エラー処理
}

となる。fopen_sは引数にファイルポインタのポインタを指定するように変更。戻り値にエラーコードが帰ってくるようになっているのでエラーの詳細がわかるのがポイントか。

エラーコードについては下記サイト参照のこと。

Download Visual Studio 2005 Retired documentation from Official Microsoft Download Center