バイナリモードとテキストモードの使い分け


バイナリモードとテキストモードはどのように使い分けますか  
どのような違いがありますか

<http://www7b.biglobe.ne.jp/~robe/cpphtml/> この説明で納得できませんでした。




テキストモードをどう定義するかはOS依存です。例えばUNIXの場合テキストモードはバイナリモードと同じとされるため特にモードの切り替えを必要としていません。  
Windowsのテキストモードの場合、ファイルに保存する際に改行コードを `\r\n`（CR LF）の２バイトを使って表現します。しかしCプログラム上では
`\n`（NL）の１バイトを使うために読み書きを行う際に変換が必要になります。この変換は

[code]

    FILE* fp;
    fprintf(fp, "\n");    // "\r\n"に変換される
    
[/code]

のように行指向の分かりやすいものだけでなく、`fread`や`fwrite`といったバイナリを扱う関数においても機械的に変換されます。

