ページ 11

ファイル指定について

Posted: 2007年5月23日(水) 17:26
by Sena
質問よろしくお願いします。

ファイルに読み書きする際に、一般的になぜコマンドラインからファイルを
指定するのでしょうか??

また、ソースに直接ファイルを指定するとは何が違うのでしょうか??


よろしくお願いします!!

Re:無題

Posted: 2007年5月23日(水) 19:22
by Hermit
>ファイルに読み書きする際に、一般的になぜコマンドラインからファイルを
>指定するのでしょうか??
色々ファイルを指定できるので、いろんなパターンの物が同じ実行ファイルで選択できるからです。

>また、ソースに直接ファイルを指定するとは何が違うのでしょうか??
コンパイルしたソースに指定されたファイルしか選択肢がないと言うだけです。
プログラムの設定用ファイルなどは、この様に直接ソースで指定している物も良く有ります。

Re:無題

Posted: 2007年5月23日(水) 20:04
by 管理人
>>また、ソースに直接ファイルを指定するとは何が違うのでしょうか??

例えば、Senaさんが作成された実行ファイルが製品化されたとしましょう。

製品化されたソフトの形はコンパイル済みの実行ファイルですよね。
まさかソースコードの状態で配布して、ユーザーでそれぞれコンパイルしてくれなど言いません。

その時、ユーザーはmemory.JPGというファイルを読み込ませたいかも知れませんし、flower.PNGというファイルを読み込ませたいかもしれません。
この時

fopen("ryoko.JPG", "r");

こんな風にコードを書いてしまったのではこの名前のファイルしか読み込めません。
ユーザーに「この名前のファイルにしてから読み込ませてください」というのは現実的では有りません。
しかし

int main(○○){
fopen(○○, "r");

このように書いておけばコマンドラインから受け取ったファイル名を開く事が出来ますので、
あらゆる名前のファイルが読み込めます。

もし自分しか使わないもので、簡単なそのファイルしか利用する機会のないプログラムなら直接書いてもどちらも同じ事だといえるでしょうね。

無題

Posted: 2007年5月23日(水) 21:27
by Sena
なるほどぉ☆
言われて見れば、便利性がかなりアップしますね!!

>製品化されたソフトの形はコンパイル済みの実行ファイルですよね。
>まさかソースコードの状態で配布して、ユーザーでそれぞれコンパイルしてくれなど言いません。

>その時、ユーザーはmemory.JPGというファイルを読み込ませたいかも知れませんし、flower.PNGというファイ>ルを読み込ませたいかもしれません。
>この時

>fopen("ryoko.JPG", "r");

>こんな風にコードを書いてしまったのではこの名前のファイルしか読み込めません。
>ユーザーに「この名前のファイルにしてから読み込ませてください」というのは現実的では有りません。

そうですよね!!!
ユーザーのコトを考えると、よくわかります。勉強になりました。

Hermit
管理人さん
ありがとうござぃます。

もう1つ質問なのですが、ファイルを読み込む時や、書き込む時に

"r"
"w"と、

バイナリーの

"br"
"bw"

を使い分ける時の違いは何でしょうか??

どういう時に"r""w"を使用して、
どういう時に"wr""wr"を使用するのでしょうか?

参考書やサイトを見てもイマイチ、ピンとこなくて・・

すいませんがよろしくお願いします!!

Re:無題

Posted: 2007年5月23日(水) 22:53
by 管理人
この辺ごらんいただくと解るかもしれません。
http://www9.plala.or.jp/sgwr-t/c/sec17.html

http://www.google.co.jp/search?hl=ja&lr ... esult&cd=6

Re:無題

Posted: 2007年5月24日(木) 10:25
by Sena
管理人さんが紹介してくださったサイトを拝見させて頂きました。

要するに、数字が含まれている時は”バイナリーファイル”とし、
文字列のみの時は”テキストファイル”と考えればいいのでしょぅか??

Re:無題

Posted: 2007年5月24日(木) 11:02
by 管理人
数字が含まれると言う意味がよくわかりませんが、

テキストファイルというものは、文字コードで扱える範囲内の文字コードで出来ているファイルです。
そのためこれに書かれている情報は全部文字に置き換えることが出来るので、テキストエディタで正常に表示できます。

一方でバイナリファイルは音声データや画像データ等を収めた文字コードの扱える以外のデータを含んでいるため、テキストエディタで開こうとすると意味不明な記号の羅列となるはずです。
何かのバイナリファイルを
テキストエディタで開いてみるとよくわかります。
バイナリファイルを開くときは、バイナリエディタを使います。私は
http://www.zob.ne.jp/~c.mos/soft/bz.html
普段これを使っています。(普段開けないようにしてあるファイルもここをいじればひらけたりして)

要するに

テキストファイル=文字で表せるデータの集合
バイナリファイル=文字で表せないデータを含むデータの集合

ということです。

Re:無題

Posted: 2007年5月24日(木) 11:09
by Sena
>一方でバイナリファイルは音声データや画像データ等を収めた文字コードの扱える以外のデータを含んでいるため、
>テキストエディタで開こうとすると意味不明な記号の羅列となるはずです。
>何かのバイナリファイルを
>テキストエディタで開いてみるとよくわかります。

ありますね!!あれがバイナリーファイルですかぁ。
わかりやすく説明して頂いてありがとうございます☆

とてもわかりやすかったです。

ありがとうございました!!