BLOG

fclose()

プログラムC言語, fclose関数, Sleep関数, クローズ, ファイル

なんかちょっと今日不思議な事?
というかよくわからない事があったので覚書。

C言語のプログラムなんだけど、
家で作って、Cygwinでコンパイルして動作確認して、
会社にソースファイル送って会社で入れてるCygwinでコンパイルして動作させようとしたらうまく動かず。

・・・第一の理由:Sleep関数
うちのCygwinのコンパイルでは普通に動いたけど、
会社の環境だとwindows.hをインクルードしなくちゃダメだった。
ていうか調べるとwindows.hインクルードしないとダメって書いてある。
うちで動作した理由が逆に謎。

・・・第二の理由:fclose関数
テキストファイルに生成した文字列を書き込んでくプログラムだったんだけど、
何故かテキストファイルに何も書き込まれず。
fcloseが失敗してんのかと思って、
fcloseの返り値をintの変数に格納して、printfで出力。
でも出力結果は0。即ち成功してる。

なんでだろう??とか思ってなんとなくテキストファイル開いたら、
何故か生成した文字列が書き込まれている!!

色々試してみた結果、ファイルクローズの際、単に

fclose(file);

って書くだけだとcloseされず

num = fclose(file);

ってやるとちゃんとcloseされるっていう謎の現象が発生…。あ、numはint型の変数です。

調べてもこんなこと出てこないので、
なんでなんで??って感じ。

意味わかんねーなー…。

そんな感じ