• ベストアンサー

テキストファイルの行数を取得する方法(C言語

C言語でテキストファイルのトータル行数を取得する関数又はその方法を教えてほしいのですが。 宜しくお願いします。

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

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.3

>C言語でテキストファイルのトータル行数を取得する関数又はその方法を教えてほしいのですが。  3つ前の質問 http://okwave.jp/qa5129642.html 質問文中のソース冒頭 line2++; 部分(下に修正したもの掲載)で、 ・テキストファイルの行数を、ファイルの頭から1行ずつ「読み捨て」て、それをファイル終端まで繰り返すことで数えています。  ここでは、「全体として、どの位メモリを確保したらいいか」という動機から、超みっともない?こと(読み捨て、1ファイルを2度オープン)をしています。   (本人には、http://okwave.jp/qa5114580.html の No.3 で指摘済み)  1行ずつ読み込みながら、1行分のメモリを追加確保していくのが普通だと思うのですが・・。 ・エディタでファイルを開けば判ることを、わざわさプログラムにする理由はなく、(質問文には現れない)主目的との「兼ね合い」でご質問された、と思います。 ・「何々したいから、プログラムの冒頭で、ファイルのトータル行数を取得しておきたい」の「何々」部分を明らかにすれば、「兼ね合い」を解消する技法について「回答」が得られるかもしれません。 もし、上の質問者様と同様な動機でしたら、少なくとも、「エディタでファイルを開き、行数を確認」し、プログラム実行時にコマンドラインで、argv[ 2 ] に行数が入るようにして下さい。 超みっともない「読み捨て、1ファイルを2度オープン」は不要となります。 プログラムでは、line2 = atoi( argv[ 2 ] ); とすることで、行数を得ることができます(ファイル名は、argv[ 1 ] で) ---------------------------------------------- 直球回答 int line2 = 0; char buf[ 1024 ]; // 最大レコード長より大きいこと FILE *fp; if( NULL == ( fp = fopen( argv[ 1 ], "r" ) ) ){  printf( "%s が開けません\n", argv[ 1 ] );  return( -1 ); } while( NULL != fgets( buf, 1024, fp ) ){  line2++; } fclose( fp );

その他の回答 (2)

回答No.2

UNIX環境であれば、 wcコマンドをパイプを使って取得するとか。 ※環境は必ず明記すべき。 それ以外の方法は便利な関数があるわけではないので ファイルを開いて自分で数えるのみ。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

右端での自動折り返しを考慮しないものとして、テキストファイル中の改行コードの数を数えれば良いのでは。 行数の変数を0に設定。 以下、ファイルの最初から最後まで繰り返し。  1文字読み込み。  改行コードだった場合は、行数の変数に1を加算。 とか。

関連するQ&A

  • C言語の関数について困っています

    こんにちは。 C言語で、テキストファイルの行数を数える関数があれば教えて頂けないでしょうか。例えば、以下の3行を含んでいるテキストファイルを対象としたとすれば 123465789123456789 1234567981234579 987654321987654321 関数を実行すれば、3という数字が得られ、 123456  789 123546879  123 123  456789123   123456789123 というテキストファイルであれば、4という数字が得られる。そんな関数をご存知な方は私にご教授願えないでしょうか。どうぞよろしくお願いします。

  • PHPでテキストファイルの行数を取得したいです。

    PHPでテキストファイルの行数を取得したいんです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • C言語でファイル名を取得

    C言語でフォルダ内のファイル名を取得する方法ってありますか? そういう関数とかありませんか? 教えてほしいのですが。

  • C言語での、テキストファイル読み込みについて

    30行×30列の数字が記載されてテキストファイルがあり、 それをC言語で例えばA[ ][ ]といった配列に読み込みたいのですが、 どうすればよいでしょうか? fscanf関数を用いればできないことはないと思うのですが、 30個も書かなければならないのは冗長なので・・・。 なにかよい方法はありますでしょうか?

  • ファイルの行数取得

    こんばんわ。 あるファイルの行数を取得したいと思います。 fopenなどでループするのではなく 関数などでありますでしょうか? 宜しくお願いいたします。

    • 締切済み
    • PHP
  • ファイルの行数取得

    超初心者です。 いま、表計算的なスクリプトを記述しています。 あるファイルの行数を取得する関数ってあるんでしょうか? ファイルに記述されている数値を足したり引いたりするのですが、forを使っての計算の際にファイルの行数が必要となりました。

    • ベストアンサー
    • Perl
  • C言語につて、教えてください!!

    C言語について教えてください テキストファイル CD_DATA|45 DVD_DATA|601 MD_DATA|24 メイン関数と読み込み関数で、テキストファイルの'|'より後ろを構造体に書き込み エラー処理でテキストファイルに'|'が無い時エラーメッセージをだす。 テキストファイルの中の行数が違った時エラーメッセージをだす。 以上です、教えてくださいお願いします。

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

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

  • c# テキストファイル操作について

    C#でテキストファイルを読み込み、そのテキストファイルの行数を数えるようにしたいのですが・・・。 テキストファイルを読み込むことができたんですが、行を数えることができません。どなたか、教えていただけませんか?よろしくお願いします。

  • ファイルの行数を取得するにはどうしたらいいですか??

    PHP4でfopenで開いたファイルの行数を取得するにはどうしたらいいですか?? 教えてください。 宜しくお願いいたします

    • ベストアンサー
    • PHP

専門家に質問してみよう