C言語関係掲示板

過去ログ

No.457.バイナリファイルとテキストファイル

[戻る] [ホームページ]
No.3296

バイナリファイルとテキストファイル
投稿者---超初心者(2002/11/02 23:01:30)


私はC言語をはじめて間もないのですがちょっと困っています。
初歩的な質問なのですが、C言語でのバイナリファイルとテキストファイル
の区別があるのはなぜですか?
あと、UNIXでは区別されないのはなぜですか?
ご教授お願いいたします。

No.3300

Re:バイナリファイルとテキストファイル
投稿者---しろうと++(2002/11/03 00:32:48)


>私はC言語をはじめて間もないのですがちょっと困っています。
>初歩的な質問なのですが、C言語でのバイナリファイルとテキストファイル
>の区別があるのはなぜですか?
http://home.impress.co.jp/magazine/dosvpr/q-a/9909/qa9909_3.htm
を参照してください。
テキストファイルにすると、人間にとって理解しやすく、
バイナリファイルにすると、コンピュータにとって理解しやすいため。
といったところでしょうか?

>あと、UNIXでは区別されないのはなぜですか?
>ご教授お願いいたします。
UNIXはどちらのファイルの内容も
0と1の並びと解釈しているから。
う〜ん。いい解答が見つかりません。ゴメリンコ

No.3303

Re:バイナリファイルとテキストファイル
投稿者---超初心者(2002/11/03 00:56:49)



回答ありがとうございました。
自分でも色々調べてみます。

No.3332

Re:バイナリファイルとテキストファイル
投稿者---かずま(2002/11/05 11:39:55)


> 初歩的な質問なのですが、C言語でのバイナリファイルとテキストファイル
> の区別があるのはなぜですか?

C のプログラム中でテキストを処理する場合、
改行文字は '\n' (0x0A) の 1文字です。

ところが、Windows では、テキストファイルの改行文字が、
CR LF (0x0D 0x0A) の 2文字です。

そこで、fopen の "r" や "w" など、テキストモードでファイルをオープン
した場合、入出力の際、この改行文字の変換が行われます。

fopen の "rb" や "wb" など、バイナリモードでファイルをオープンした
場合、改行文字の変換は行われません。


> あと、UNIXでは区別されないのはなぜですか?

UNIX では、テキストファイルの改行文字は、0x0A の 1文字で、C プログラム
中での '\n' とまったく同じなので、入出力の際の改行文字の変換は不要です。
したがって、バイナリファイルと区別する必要はありません。