cwnicol programming

プログラミング関連の投稿をすこしだけ

fopen()のテキストモード、バイナリモード

これらのモード指定はWindowsでfopen()を使用する際に
考慮するものだ。
  
Linuxでモード指定は必要ない。なぜならばLinuxにおける
「テキストファイルの改行コード」と「プログラム内部の改行コード」が
一致しているからだ。(共に0x0a)
  

OS テキストファイルの改行コード プログラム内部の改行コード
Windows 0x0d0x0a 0x0a
Linux 0x0a 0x0a

  
  
以下にモードによる挙動の違いを示す。

モード 内容
テキストモード 書込み時 : '\n'(0x0a) ⇒ '\r''\n'(0x0d0x0a)に変換。
読込み時 : '\r''\n'(0x0d0x0a) ⇒ '\n'(0x0a)に変換。
また、0x1aをEOF扱いする。
バイナリモード 書込み、読込み時に上記変換を行わない。
また、0x1aをEOF扱いしない。


・参考URL
   http://www9.plala.or.jp/sgwr-t/c/sec17.html
   http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CBEG/cbeg7.html