fopen関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
わこう

fopen関数について

#1

投稿記事 by わこう » 10年前

fopen関数についてふと疑問に思ったことがあり、質問させてください。

コード:

if ( ( fp = fopen ( fname, "w+b" ) ) == NULL ) {			
    printf ( "\n エラー" );			
    return -1;			
}	


これ、fopen関数の鉄板ともいうべき使い方だと思うのですが、いろいろなサイトを調べて
回って、第二引数が "r" の時ファイルが見つからなければNULLを、"w"、 "a" なら新規作成する
というところまでわかりました
ということは、第二引数が "w"、 "a" のときはNULL が返されることはないのじゃないか?
と、ふと考えてみたのですが、この辺はどこも詳しく解説してくれるサイトがみつからなかったため、
どなたか教えていただけませんか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: fopen関数について

#2

投稿記事 by みけCAT » 10年前

自分の環境では、書き込み禁止(読み取り専用)のファイルに"w"でアクセスしようとすると、NULLが返りました。

Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
GCC(MinGW) 4.8.1
添付ファイル
fopen_w_a.zip
テスト用データ
(8.7 KiB) ダウンロード数: 101 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: fopen関数について

#3

投稿記事 by かずま » 10年前

わこう さんが書きました: ということは、第二引数が "w"、 "a" のときはNULL が返されることはないのじゃないか?
fopen はディレクトリを作れないので、fname = "dir/file" の場合、
"dir" という名前のディレクトリが存在しなければエラーになり、NULL を返します。
fname = "dir/" や fname = "." の場合も、NULL を返します。
ハードディスク(USBメモリでもよい)に空きがない場合も NULL を返します。

わこう

Re: fopen関数について

#4

投稿記事 by わこう » 10年前

あ~そういうことですか!!
わかりました!みけCATさん、かずまさんありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る