テキストとバイナリの違いについて

[戻る]
さくら 2002/09/10(火) 08:27:29
おはようございます。

文字列の読み込みや書き込み、実数の読み込みや書き込み、整数型の読み込みや書き込
みについて、テキストモード・バイナリのモードについて教えてください。

わかりやすくまとめようと思いましてお聞きいたしました。

これどう? 2002/09/10(火) 09:09:17
http://hp.vector.co.jp/authors/VA016117/c/memory2.html

アイススケーター 2002/09/10(火) 09:13:58
↓にMSDNのヘルプを書きました。
この手の質問は、一度ヘルプを見てからのほうがよろしいと思います。

−−−−− 以下 抜粋(fopen) −−−−−−−−−−−−−−−−−−−−

t

   テキスト モード (変換モード) で開きます。このモードでは、Ctrl+Z は、入力時にEOF 
(end-of-file) 文字として解釈されます。読み出しと書き込み用に "a+" モードで開いたファ
イルでは、fopen がファイルの終端に Ctrl+Z があるか否かを調べて、除去できるときは除去
します。これは、終端に Ctrl+Z があるファイル内を fseek 関数と ftell 関数を使って移動
すると、fseek 関数がファイルの終端近くで誤った動作をすることがあるからです。

また、テキスト モードでは、CR-LF (キャリッジリターンとライン フィード) シーケンスは入
力時に 1 個のライン フィード (LF) に変換されます。出力時には、LF 文字は CR-LF シーケ
ンスに変換されます。Unicode のストリーム入出力関数がテキスト モード (デフォルト) で動
作すると、ソースまたはデスティネーション ストリームがマルチバイト文字のシーケンスとみ
なされます。したがって、Unicode のストリーム入力関数は (あたかも mbtowc 関数を呼び出
しているかのように) マルチバイト文字をワイド文字に変換します。同じ理由で、Unicode の
ストリーム出力関数は (あたかも wctomb を呼び出しているかのように) ワイド文字をマルチ
バイト文字に変換します。

b

   バイナリ モード (無変換) で開きます。CR-LF シーケンスの変換は行われません。

t または b を mode 中に指定しないと、デフォルトの変換モードはグローバル変数 _fmode 
によって定義されます。t または b を引数の前に付けると、関数は失敗し、NULL を返しま
す。

Unicode とマルチバイト ストリーム入出力におけるテキスト モードとバイナリ モードの使い
方については、「テキスト モードとバイナリ モードのファイル入出力」と「テキストおよびバ
イナリ モードでの Unicode ストリーム入出力」を参照してください。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

これどう? 2002/09/10(火) 09:18:23
数ある説明のなかでまぁわかり易く書いてあるほうです。
参考になれば幸いと思います。

テキストモード  0x0A ←→ 0x0D,0x0Aの変換をするモード
バイナリモード  何もしないモード

さくら 2002/09/13(金) 08:29:54
[[解決]]
ありがとうございます。参考になりました

古いスレッドには追加発言できません。