• ベストアンサー

ファイルから読みこむ方法

naturalの回答

  • natural
  • ベストアンサー率37% (419/1115)
回答No.2

L_E_Dさんも書かれていますがfgets等行単位で読み込む関数を使えば可能です。 しかしどうも文面から察するにロジックの組み立てに慣れていないのではないでしょうか? 少なくともファイルがオープンできていれば後はfor文等で簡単に出来ます。(カウンターで行数をカウントすれば良いですよね) 頭から4行目までは読み出すだけで捨てておいて5行目からEOFが出るまで読み込んでいけば最初の例はクリアできますよね。 2番目の例も10行目から20行目までの読み込みが終わったらループを抜ければ良いだけです。 それともひょっとしたらUnixのコマンド(tail等)で同様のことが一発で出来るのでUnix環境ならC++でも出来ると誤解されていますか? 環境が変わってもロジック的なところは共通ですよ。

noname#794
質問者

お礼

必要な行だけを使えばよかったのですね。 そこまで考え付きませんでした。 なんか便利な関数があったりするのかなあって思ったので質問したのですが・・・。 回答ありがとうございました。

関連するQ&A

  • 最終行をファイルを開かずにカットする方法はありますか?

    UNIXのviでファイルを開くと最終行が不完全といわれてしまいます。最後に半角スペースと変な文字が入っているようです。 viエディタのコマンドで、DDを押し最終行を手動でカットすると直るのですが、 Cやシェルなどで最終行をカットする方法はありますでしょうか?

  • テキストファイルの一行目に特定の文字を追加するソフトを探しています

    テキストファイルの一行目に特定の文字を追加するソフトを探しています。さらに、ファイルの先頭から何行かを削除する操作もできると助かります。 私はCとフォートランを使うので、 UNIX上でそうゆう操作をするようなプログラムを作るのは可能なのですが・・・ ウィウンドウズ上で、条件を指定しておけば、 あとはドラッグ&ドロップでそうゆうことをやってもらえるソフトがあれば便利なのに!・・と思います。 UNIX上では、読む込むファイルをいちいち指定するのが面倒で・・。

  • ファイルのコピーについて

    次のようにファイル名が記述されている、テキストファイルがあります。 「A.xls,B.txt C.doc,D.xls,E.pdf」 行と行はEnterで改行されており、ファイ名は「,」で区切られています。 この状態で、最後の行の複数のファイルを特定のフォルダにコピーするにはどのように記述すればいいですか?

  • awkで二つのファイルを比較し出力する方法

    UNIXで二つのファイルを使って別ファイルを出力する 処理をしたいのですが、awkで二つのファイルを扱う方法 が分かりませんでした。 やりたい処理は以下のような事です。 ファイルAの1行目"AAA B"と同じ行がファイルBにあったら、ファイルAの"AAA B"の次の行に、 ファイルBの次の行"YYY bbb"を挟み込みます。 もし、ファイルBに同じ行がなかったら、 ファイルAの次の行に"NG"を挟み込みます。 [ファイルA] AAA B ZZZ B AAA C ZZZ C AAA D ZZZ D [ファイルB] AAA B YYY bbb AAA C YYY bbb [出力ファイル] AAA B YYY bbb ZZZ B AAA C YYY ccc ZZZ C AAA D NG どなたか良いスクリプトありましたら 教えていただけないでしょうか。 よろしくお願いします。

  • ファイルから特定の行を出力したい

    あるファイルの特定の一行だけを取りだすunixの コマンドを教えて下さい。 具体的には cat a.txt 1gyoume 3gyoume 4gyoume 5gyoume 6gyoume 7gyoume 8gyoume といったファイルの末尾からX行目の内容を変数に入れたいのです。 a.txtが8行あると判断して8-X行目でファイルを分割、そのファイル をtailコマンドで末尾1行目だけ出力すると出来そうだと思ってい るのですがもっと簡単な方法はないでしょうか。

  • C言語で書き込んだファイルの重複行の削除と行の並び変えるプログラミング

    C言語で書き込んだファイルの重複行の削除と行の並び変えるプログラミング ファイル名が 0.txt というC言語で書き込んだテキストファイルがあり その中身は以下のようなものとします。 111 000 222 555 000 444 222 000 これらを行ごとに見て重複行を削除し 更に値の小さな順に並び変えたい、つまりファイル内を 000 111 222 444 555 となるようなプログラミングを考えているのですが 調べても分からず悩んでいます。 c言語のプログラム内に UNIXコマンドを扱う方法を考えているのですが c言語内でUNIXコマンドを併用するためのsystem()関数 や 重複行を削除する uniq というUNIXコマンドを どのようにプログラム内に挿入すればいいのでしょうか? ご回答、よろしくお願いいたします。 ちなみに以下のプログラムは system関数が理解できない私の作成失敗したものです。 #include <stdio.h> #include <stdlib.h> int main(void) { system("uniq 0.txt"); }

  • ファイル書き込みについて

     ファイルが2つあって、片方のファイル(以後、ファイル(1))を読み込んだものを、もう片方のファイル(以後、ファイル(2))に書き込みたいと思います。 ファイル(1) aaaaaa bbbbbb ccccccc dddddddd eee ファイル(2) aiueo kakikukeko  → ある特定の行:A行 sashisuseso  → B行 : papipupepo  → C行 gagigugego  → D行 ざじずぜぞ ナニヌネノ  ここまではわかるんですけど、ファイル(2)に書き込む時に、A行の次の行、B行からD行の前のC行までを一旦削除して、削除したその部分に書き込みたいんですけど、どうしたらいいでしょうか?

    • ベストアンサー
    • Perl
  • UNIX C ファイル出力

    UNIX Cにてあるテキストファイルの中身(1行分)を、別のテキストファイルに出力したいのですが、どうすれば、いいでしょうか。 例。A.txt 123 yano 200612   ↓ B.txt 123 yano 200612

  • ファイル操作について

    元からある3次元のデータが格納してあるファイルがあります。 そのファイルの特定の行だけ削除するようなプログラムはC++で どのように実装すればいいのでしょうか? よろしくお願いします。

  • シェルでファイルの最下行を削除する方法

    シェルでファイルの最下行を削除する方法 シェルで、ファイルaaa.txtの最下行を削除したいです。これを1行で実現したいです。 exには-cってオプションがあるので、ex -c '$d' aaa.txt などと試してみましたがダメでした。 ;(コロン)や&&でつなぐのは、1行ではないって事でお願いします。 >cp aaa.txt tmp && sed '$d' tmp >aaa && rm tmp #こういうのは無しって意味です。 事前にスクリプトや、それ専用のバイナリを用意しておくのも無しでお願いします。なるべく汎用的な どこのUNIXにでもあるようなコマンドで実現したいです。