No.2ベストアンサー
- 回答日時:
ファイルがレコードで構成されている時、
レコードのサイズが一定なら、
任意の番号のレコードに(位置決めして)ランダムにアクセスすることができるが、
\n<->\r\nの様に勝手に変換されてしまうモードでは、
レコード中の\nの個数が不定の場合レコードサイズが変わってしまい、ランダムアクセスはできない。
No.4
- 回答日時:
#1です。
実際に試してみるだけではわからないことがあるので、補足しておきます。というか、これだけでも十分に回答になるような気がしますが...C言語の標準規格では、fseekの仕様が次のようになっています。
バイナリストリームの場合、(シーク後の)新しい位置は、SEEK_SET/SEEK_CUR/SEEK_ENDで指定した位置にオフセットを加えたものになります。ただし、SEEK_ENDの指定が期待通りの動作になるかどうかは処理系に依存します。
テキストストリームの場合、SEEK_CURまたはSEEK_ENDを指定した場合のオフセットは0でなければなりません。SEEK_SETを指定した場合のオフセットは0または以前にftellが返した値でなければなりません。
つまり、テキストストリームの場合、以前にftellによってブックマークした位置か、ファイルの先端と終端にしかランダムアクセスできないことになります。
なお、fseek以外の方法でファイル位置表示子を変えることができる標準関数は、fsetposとrewindだけですが、前者は以前にfgetposを呼び出した位置にしか移動できませんし、後者は先端にしか移動できません。
No.3
- 回答日時:
言語はCに限らない。
アクセスモード以前に、バイナリ形式のファイルと、plain textファイルとの違いを理解していますか?
テキストファイル(例えばあなたの書く~.cファイル)を開いたとして、
18行目がどこになるか。
これを見つけるためには、先頭から走査して
改行を示すバイト列(0x0d0a, 0x0aないし0x0d)の出現回数を数えないといけない。
(各行の文字数は一致しない前提)
で、バイナリファイルの場合、
塊のサイズ * offset で、何番目の塊にでも
一気にアクセスできる。
これが理由です。
No.1
- 回答日時:
実際に、バイナリモードとテキストモードを使って、ランダムアクセス処理をやってみるのが一番です。
他人からの受け売りではなく、実体験に基づいた、中身のある結論に到達すると思います。
なお、その際には、バイナリモードとテキストモードで差が現れる処理系を使う必要があります。具体的には、Unix系は避けた方がよいでしょう。あるいは、ワイド文字を使うかです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- その他(プログラミング・Web制作) 複数のテキストファイルの結合方法 2 2022/05/14 23:58
- Excel(エクセル) エクセル 任意の列数で分割する方法 3 2022/07/31 14:58
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
Excel VBAが徐々に遅くなる
-
テキストデータ変換(プログラ...
-
本を探しています(XMLをPerlで...
-
エクセルのマクロについて教え...
-
テキストファイルをSQLServerデ...
-
パイソンでのテキストデータの...
-
Zbarというソフトについて
-
UTF-8とASCIIコードにおける互...
-
オンラインコンパイラーを使っ...
-
バイナリファイルの区別
-
ストリームについて。
-
バイナリデータの中からMidのよ...
-
テキストファイル固定長データ...
-
Objective C(iPhone SDK)でテキ...
-
既存のテキストファイルを開く方法
-
StreamReaderで読み込んだファ...
-
C言語のソースからコメントを抜...
-
VB(VBA)で、バイナリデータを使...
-
テキストファイルの一部分を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
Excel VBAが徐々に遅くなる
-
テキストファイルの一部分を抽...
-
既存のテキストファイルを開く方法
-
テキストファイル(英語&日本...
-
VB(VBA)で、バイナリデータを使...
-
パイソンでのテキストデータの...
-
VBA。開いているテキストファイ...
-
テキストファイルの特定行の削...
-
テキストファイル内容の、16進...
-
StreamReaderで読み込んだファ...
-
テキストファイル固定長データ...
-
ファイル変換
-
STM32 Nucleo-F446REでデータを...
-
テキストファイルで一番使われ...
-
エクセルVBAでメールの自動作成...
-
テキストファイルのログをExcel...
-
UTF-8とASCIIコードにおける互...
-
テキストファイル内の文字の有...
-
フォーム無しでアプリを作成す...
おすすめ情報