No.2ベストアンサー
- 回答日時:
>ファイルポインタを使ってファイルの途中に読み書きするサンプルを紹介してください
だから、ファイルポインタじゃね~っていってんのに!まあ、いいけど。
次のサンプルは、テキストファイルで、CDのタイトルとそのあとトラック番号、曲名、時間が入っているものから、アルバム名を指定して、そのアルバムのデータを一覧するようなものと思って下さい。
data.txt
----------------------------------
title:album1
1:kyokumei1,1:55
2:kyokumei2,2:20
title:album2
1:セーブミー,3:33
2:リードミー,1:09
title:album3
1:フラッシュ,0:10
2:パールの指輪,2:22
------------------------------
sample.pl
-----------------------------
open(DATAFILE,"<data.txt");
while(<DATAFILE>){
if(/title:(.*)/){
$datapos{$1}=tell DATAFILE;
}
}
close(DATAFILE);
while(1){
print "アルバム名を入力して下さい>";
$name = <STDIN>;
chomp $name;
last unless($name); #入力無し(リターンのみの時終了)
open(DATAFILE,"<data.txt");
seek(DATAFILE,$datapos{$name},0);
while(<DATAFILE>){
last if /^\n$/;
print;
}
close(DATAFILE);
}
-----------------------------------------
実行結果
-----------------------------------------
E:\>sample.pl
アルバム名を入力して下さい>album2
1:セーブミー,3:33
2:リードミー,1:09
アルバム名を入力して下さい>album1
1:kyokumei1,1:55
2:kyokumei2,2:20
アルバム名を入力して下さい>album3
1:フラッシュ,0:10
2:パールの指輪,2:22
アルバム名を入力して下さい>album1
1:kyokumei1,1:55
2:kyokumei2,2:20
アルバム名を入力して下さい>
E:\>
-----------------------------------------
解説:
テキストファイルをDB的に使うために、それぞれのアルバム位置を最初に読み出しておいて、その位置を記憶しておきます。
指定されたアルバム名でその位置からデータ区切りである空行までをプリントします。
全部のデータをメモリに読み込んでおくこともできますが、
このようにすることで、メモリの消費を少なくでき
大きいデータファイルに対しても、少ないメモリで動かすことができるというメリットがあります。<この場合の話。
これは、あくまでこういう使い方もできるという一例に過ぎないことに注意。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- その他(社会・学校・職場) 誰か聞いてください。 社会人6年目ですが、私はポンコツすぎますか? 上司にとあるAファイルの数式を全 1 2023/08/10 18:25
- Google Drive one drive?同期できません 1 2022/11/21 20:53
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
- その他(クラウドサービス・オンラインストレージ) iPadとクラウドの同期はできないですか? 1 2022/05/21 09:34
- ノートパソコン 今現在PCにアカウントが2つあるのですがファイルをusdで他のアカウントに移動するのが面倒でパブリッ 1 2022/10/11 06:30
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- その他(クラウドサービス・オンラインストレージ) OneDriveの同期ができません。助けてください。 1 2023/06/13 17:02
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
ドラッグアンドドロップでファ...
-
csvファイルを開かずに文字を検...
-
Javascript で INI の読み書き
-
分割コンパイルの#defineについて
-
テキストファイルの最終行を削...
-
ファイルを記録してあるセクタ...
-
クリップボードから任意のファ...
-
C言語のfopenについて教えてく...
-
Excelファイル、セルの読み書きで
-
バッチで118項目のCSVを処理し...
-
COBOLでの可変長定義について
-
エクセルVBAでフォルダ内の重複...
-
SGファイルって何ですか?
-
BI書、FD書 とは
-
VB.NETによるプロセス間通信
-
WAVファイル同士の結合が可...
-
ハッシュの計算時間について
-
ファイルの結合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
VBに、Cのincludeのようなもの...
-
CSVファイルへの保存の際、デー...
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
iniファイルに追記がしたいです。
-
ドラッグアンドドロップでファ...
-
SGファイルって何ですか?
-
同じ名前のファイルを作った場...
-
アドレス帳WABファイルをサンダ...
-
ダイアログボックスで複数フォ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報