• ベストアンサー

ファイルの読込

ファイルからテキストデータを読み込むときにCStdioFileクラスのReadStringを使って一行ずつ読み込んでいますが、指定した行だけを読み込めるようにしたいのですがどうしたらいいでしょうか?

noname#6127
noname#6127

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

  • ベストアンサー
  • uyama33
  • ベストアンサー率30% (137/450)
回答No.1

char buf1[256]; char buf2[10][256]; int k[10]; k[10] には、読み出す番号を入れておく 1の結果は buf1 に入れる。 2の部分は 行番号を if 文で調べて  k[10] の中入っている番号なら buf2 に入れてためる。 buf2 をどれだけ使ったかは別のカウンターをつけて管理する。 こんなところいかがでしょうか?  他には、 ファイルを開いて 1文字ずつチェックしながら ばっふぁにためる CRLF の部分が来たら 行が変わったと思う 行数をチェックしてから また、バッファの先頭から文字をためてゆく 必要な行については 別のバッファに移して下さい。

その他の回答 (1)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

CStdioFileクラスから派生させて新しいクラス(仮にMyStdioFileクラス)を作ります。 MyStdioFileクラスにMyStdioFile::ReadMultiString()メソッドを実装しましょう。 MyStdioFile::ReadMultiString中でCStdioFile::ReadStringを指定回数呼び出せば事足りると思います。 質問の意図を取り違えている可能性が否めないので自信なし。

関連するQ&A

  • ファイルの読み込みと置き換え

    Perlでテキストファイルを読み込み、テキストの一部を置き換えをするというプログラムを作っています。 用意されているテキストファイルは複数行あるもので、リスト作成ツールのフリーソフトにより作成されています。 目的はファイルを読み込み、一行一行中を見て特定の文字を置き換えて、最後に配列に一行一行いれていくというものです。 逆に配列に一度いれて一個一個置き換えてもOKで、結果が同じならばOKです。 以下にそのプログラムを書きます。 ############################## open(IN,"list.txt") || die "ファイルが見つからないので終了します。"; @file = <IN>; $count=@file; while(<IN>){ $_=~s/xls/エクセルファイル/; print "置き換え中!残りあと$count行です\n"; $count-- } close(IN); print"@file[18]","\n"; ############################## 最後の行で置き換えが成功したか見てますが、これを実行しても何も表示されません。 もちろん行数は18行どころか100行くらいあります。 たぶん配列の入れるタイミングとか何かが間違っていると思うのですが、どこで間違っているのかがよくわかりません。 教えていただけると助かります。

    • ベストアンサー
    • Perl
  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • テキストファイルについて

     ご教授お願い致します。  あるレコードを自動でテキストファイルへ書きこむ作業がありまして  テキストファイルの保存先名の指定はできるのですが  タイトルをテキスト行の一行目につけたいとの要望がありました。  そのレコードのみの書き込みのため一行目に何の題名かが  自動で表示できればいいとの要望でした。  よって、保存先名を指定の場所でファイル名を作成すると同時に  一行目に指定した題名をつけることが可能でしょうか?  ぜひ、ご回答お願い致します。  

  • csvファイルについて

    javaで、csvファイルを読み取り、データベースにいれるツールを作成しています。 csvファイルを読み込む部分でつまづいてしまったので、どなたかご教授ください! 指定されたcsvファイルを一行ずつ取り込むのですが、一つの情報が2行以上になってしまうデータがいくつかあり、ファイルチェックとして、1つ目のカラムは何文字のものだとかしているけれども、その前の行の続きに当たる行が、その条件から外れてしまい、エラーになってしまいます。(当たり前ですが、、、) なぜ、csvファイルが一行に収まらないのかが、わかずですし、それを一行として読み込むことができるのかが不明で困っております。   原因や対処法が分かれば、教えていただければと思います。 よろしくお願いします。

  • fgets の失敗時、再読み込み開始位置は?

    こんにちは。 fgets の失敗時、再読み込み開始位置はどこになるのでしょうか? 例えば、以下点線内のファイルを読み込み、bを読み込めずに失敗した場合 再度 fgets を発行(以下★)した場合、得られる文字列はどれでしょうか? (EOFまで読み込み NULL で返却されることは考えないとします) ----- a b c ----- if( fgets( line, 100, stream ) == NULL)  fgets( line, 100, stream ) ★ 元々CStdioFile クラスの ReadString メソッドで CFileException がスローされた場合の再読み込み処理を 調べていたのですが、ReadString メソッド内部では fgets をコールしていたので質問させていただきました。 よろしくお願いします。 Windows XP VC++6.0

  • テキストファイルの行を指定して読み込み

    テキストファイルの読み込みたい行を指定して テキストボックスに表示させたいのですが、 どのようにすればよいでしょうか? StreamReaderには一行分の文字を読み取るReadLine メソッドがありますが、行は指定はできないようです。 良い方法があればアドバイスを頂きたいです。 よろしくお願いします。 --- 開発環境:VS2005 pro OS:Vista

  • C言語のテキストファイルの読込み

    必要に迫られてC言語でテキストファイルの読込みを行う プログラムを作成しなければならなくなりました。 whileとfscanfを用いて書式を指定して一行ずつ読込むことができる ということは知っていますが、その際、たとえば読み込むファイルが 20行のテキストファイルだったとして、10行目から読込みを 行いたい場合はどのようにプログラムを書けばいいのでしょうか? なにぶんC言語初心者ですのでよろしくお願いします。

  • ファイル読み込みについて

    CまたはC++で、データごとにタブで区切られたテキストファイルを読み込む処理があります。 例) 項目1(タブ)fea 5310 a(タブ)2009(改行) 項目2(タブ)dc 6307(タブ)2012(改行) 項目3(タブ)beaf 23 t(タブ)2010(改行) fscanf で読み込もうとしたのですが、タブとスペースが同じように扱われてしまうようで、 スペースが含まれるデータがある場合、上手く読み込めませんでした。 結局、fgets で一行ずつ一時バッファに読み込んでから一文字ずつチェックして データごとに切り分けたのですが、釈然としません。 もっと簡潔な方法はないでしょうか?

  • ファイルの読み込みについて

    いつもお世話になっています。 早速質問なのですが、VBのファイル処理において固定長データのテキストファイル読み込みの処理で、 固定長データの改行コードがChr(10)になっているデータがあります。 下記のどのOpenステートメントを使用しても、1行読み込みではなく全行読み込まれてしまうのです。 ↓ファイルモード (1)Open strInFile For Input As #intInFile (2)Open strInFile For Random As #intInFile Len=文字数 (3)Open strInFile For Binary As #intInFile ちなみに読み込みのモードは ・Line Input ステートメント ・Get ステートメント の2つを使用してみました。 改行コードの種類に依存せずにデータを1行読み込む方法を教えていただきたいです。

  • VBでのテキストファイルの 読み込み & 書き出し について

    テキストファイルの中味を全部読み込んで、テキストボックスに表示するというコードをOpenステートメントを使って書いています。 その際、1つの種類のデータを1つのテキストファィルとして書き出し&読み込み しているのですが、これですと種類が増えていくとともにテキストファイルの 数もどんどん増えてしまい効率が悪いです。 で、それらを1つのテキストファイルにまとめておいて、中をセクションに 区切って、それを読み込み&書き出しする方法はあるのでしょうか? データが1行ですと分かるのですが、それぞれが長いテキストデータを1つの テキストファイルに区切って書き出し&読み込みする方法が分かりません。 どなたか教えてください!!!!!!! よろしくお願いします。

専門家に質問してみよう