• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル(データ)のコピー)

ファイル(データ)のコピー方法と速度比較

このQ&Aのポイント
  • ファイル(データ)のコピー方法と速度比較について説明します。
  • C言語初心者がテキストファイルのコピーをファイル単位とバイナリ単位で行う方法について質問しています。
  • 具体的なコーディング方法と実行時間の計測についてアドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 「ファイル」と「バイナリ」は対語ではありませんので、混乱なさるのも無理のないことです。  「ファイル」とは、ディスク上にある情報単位、「バイナリ」とは、そのファイルの内部形式ですので、「ファイル」というものの種類の1つとして「バイナリファイル」というものがあることになります。  よってこの場合、「テキスト形式とバイナリ形式ではどっちが速いでしょう」という設問にすべきです。  やり方としては、オープン時に、   fopen( "www.txt", "r" );  こうするとテキスト形式での読み込み、   fopen( "www.txt", "rb" );  こうするとバイナリ形式での読み込みになります。  テキスト形式では、fgets() 関数での読み込み時に、改行のところまでで読み込んでくれたり、改行文字を2バイトから1バイトへ変換してくれたりする機能が付加されますので、理論上はそのような変換処理のないバイナリ形式の方が高速です。  もっとも最近のパソコンだと、ミリ秒で計測しても違いが分からないかもしれません……(^_^;

mahada_sv
質問者

お礼

回答して頂き、ありがとうございます。 >「テキスト形式とバイナリ形式ではどっちが速いでしょう」という設問にすべきです。 これは、テキストファイルをコピーする場合という意味ですよね? それならば理解できるのですが、他のファイル形式(例えばexeファイルとか)を コピーする場合にはどうなのでしょう? 同じなのでしょうか?

その他の回答 (1)

noname#25358
noname#25358
回答No.2

 最初からバイナリ形式で記録されているファイルを、テキスト形式でコピーしてはいけません(^_^;  テキストの読み込み/書き込みでは、改行文字に関する処理が自動的に付加されるため、バイナリファイルをテキスト形式でオープンすると内容が破壊されるためです。  テストとして仮にそういうプログラムを組むとしたら、しょせんデータはデータです。テキストファイルと変わりません。

mahada_sv
質問者

お礼

ありがとうございます。 おかげさまで頭の中がすっきりしました。