2012-03-09 16 views
1

選択したデータに何らかの高速アクセスを提供することがギガバイトのファイルにあります。開始点を見つけたら、その後のアクセスは順次になります。ファイルには、各レコードの先頭に日付が含まれ、ファイル全体で日付が増加します。私は冒頭で始めて、前のものを無視してファイルを読みたいとは思わない。私はWINDOWSアプリケーションにのみ興味があります。私はテキストモードでファイルを開きたいと思います。大きなファイルにすばやくアクセス - fseek ftell fsetpos fgetpos

64ビットのfseek/ftell関数またはfsetpos/fgetpos関数を使用して、ある種のソートバイナリ検索を行うことができます。私は、改行で区切られたレコードの真ん中を探すかもし​​れないが、あなたは単にfgets呼び出しで部分レコードをスキップできると思うだろうと思う。

fseekは、ファイルサイズを決定するためにftellで使用できるように、SEEK_ENDメカニズムの起源を提供します。 fsetpos/fgetposと同様の機能はありません。 fsetpos/fgetposに行った場合、どのようにファイルサイズを取得できますか?

_fseeki64/_ftelli64 fsetpos/fgetposで使用されるint64とfpos_tもint64なので、ポインタの算術演算ができるはずです。

ここで間違ったトラックをオフにしていますか?私はいくつかの他のアプローチを考慮する必要がありますか?

答えて

1

_fseeki64/_ftelli64は、あなたが望むものを正確に実行します。なぜそれらを使用するのを躊躇しますか?あなたのアプローチは大丈夫です。

+0

最後にこれを終了して終了しました。問題は発生しませんでした。私のファイル内のすべてのレコードがほぼ同じサイズであるため、素晴らしい作品です。 –

関連する問題