• ベストアンサー

C言語 コンソール VC6.0で

テキストファイルをfopenで読み込んだ後、 そのテキストが「何行で構成されているか」を知りたいのですが、 どうすればよいでしょうか? 改行の数を数える=何行かということだと思うのですが、 なかなかうまくいきません。よろしくお願いします。

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

  • ベストアンサー
回答No.4

fgets()を利用して調べてみてはどうでしょう ---------------------------------------------------------------- char buf[256]; int count = 0; while( fgets( buf, sizeof(buf)-1, fp ) != NULL ) count++; ---------------------------------------------------------------- fgets()は改行がくるまで読み込む関数ですので、 読み取れなくなるまで呼び出せば、それが行数となります。 ※このプログラムは1行が最大255文字のテキストしか保障していません

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#20505
noname#20505
回答No.5

サンプルを示せば、こんな感じですね。 下記のサンプルは、見易くするため漢字を入れました。 /* ファイルの改行数取得 */ int sample(char *path) {  FILE *fp;  int cnt=0, ch;  if ((fp = fopen(path, "rt")) == NULL) return (cnt);  while ((ch = fgetc(fp)) != EOF) {   if (ch == '\n') cnt++;  }  fclose(fp);  return (cnt); }

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

ソースコードを提示してはどうでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> 改行の数を数える=何行かということだと思うのですが、 それで問題ありません。 > なかなかうまくいきません。 どううまくいかなかったのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

読み込んだ後じゃなくて読み込むときに1行づつ読み込んでカウントするのはどうでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [c言語] fopenでの追記

    c言語についてです。 すでにあるテキストファイルに追記したい場合、ファイルの一番下の行から追記されてしまうのですが、 最初から追記ができるようにするにはどうすればいいのですか。 ※ FILE *fin=fopen=("hoge.log","a"); や FILE *fin=fopen=("hoge.log","a+"); で開いてます。 ( rewind(fin)は無理でした。 ) よろしくお願い致します。

  • C言語

    C言語で簡単なプログラムを作っているのですが、 「テキストファイルが存在し、かつ空のテキストファイル(開いても何も書かれていない)だと、そのテキストファイルを削除する」 というコードはどうのように書けばいいのでしょうか? 現在自分が考えているのは、 #include<stdio.h> int main(){ FILE *fp; if((fp=fopen("example.txt","r"))==NULL){ printf("file not open\n"); }else if(((fp=fopen("example.txt","r"))!=NULL)&&(fgetc(fp)==NULL)){ //「ファイルがあって、中に何も書かれていない」という条件式を書きたい// remove("example.txt"); } return 0; } 大学で講義としてC言語を習っている程度の知識です。 fopenのif文の書き方があってるかどうかもわからないんですが^^; borland c++ 5.5.1を使用しています。 よろしくお願いします。

  • C言語

    毎度お世話になっております。 C言語の勉強を最近始めたのですが、ファイル処理で どうしても出来ない事があり質問させてもらいました。 処理内容は 「特定のファイルの指定した行だけを削除する」です。 fopenしたファイルをscanfによって削除したい行を指定して ファイルの編集をしようと思っているのですが、どうもできません。 初歩的な処理かと思いますがどうか教えてください。

  • C言語の質問です。クイズをテキストファイルに書き、それを読み込むという

    C言語の質問です。クイズをテキストファイルに書き、それを読み込むというモノなのですが、その前に前回のスコアを読み込み、棒グラフにして出力しなければいけません。また、問題も1行ずつ読み込み正否を判定します。問題のテキストは、「1,問題文 1.○○ 2,○○ 3.○○」とし、頭に解答を書いています。最後に、正解した数をスコアファイルに書き、終了とします。一応、初めてなら、スコアファイルを新規作成し、2回目ならスコアファイルを開く、というところまでは、出来ましたが、その後がどうにも進みません・・。どなたか教えて頂けないでしょうか・・。 #include <stdio.h> int main(void) { FILE *fp; char str[256]; if((fp = fopen("score.txt","r")) == NULL){  printf("このゲームを初めて実行しますね。\nスコアファイルを新規作成します。\n");  fp = fopen("score.txt","w");  fclose(fp);} else{  printf("スコアファイルを読み込みます。\n");  fp = fopen("score.txt","r");  fclose(fp);} return 0; } 一応ここまでは、出来ています。

  • C言語のfopenについて教えてください。

    C言語のfopenについて教えてください。 ある1つのファイルをr(テキストファイル読み込みモード)でfopenしたとします。 そのファイルをfcloseする前に、同じファイルが再度rモードでfopenされても問題ないのでしょうか? 何を気にしているかと言いますと、あるプログラムであるファイルをrモードでfopenして読み込む処理があるのですが、そのプログラムを呼び出す処理が複数あります。 確率は低いと言えど、もし同時にその処理が実行された場合、rモードでfopenしているファイルにfclose前に再度rモードのfopenがされたらエラーとなってしまうのでしょうか? もし、エラーとなる場合、回避する方法がありますか? また、エラーとならない場合は、fcloseするまで次の処理が待ってしまうのでしょうか? 読み込みモードだから問題ないのかなとも思ったのですが、どなたかご存知だったら教えてください。 よろしくお願いしますm(_ _)m

  • C言語のプログラムに関する質問です。

    C言語初心者で困っています。 SNをサンプリング数、FNをファイル数として、テキストファイルの1行目のデータ(kari[0])と2行目のデータ(kari[1])をそれぞれCH1、CH2に読み込むような以下のようなプログラムがあります。 ------------------------------------------ //読込みファイル名の設定// for(j=1;j<FN+1;j++){ sprintf(file_name,"%s%d%s",file,j,".txt"); printf("%d%s\n",j,file_name); if ((fp = fopen(file_name, "r")) == NULL){ printf("Error: Can't open file; %s\n", file_name); } //データの読込み// for(i=0;i<SN;i++){ fscanf(fp,"%lf,%lf\n",&kari[0],&kari[1]); ch1[i]=kari[0]; ch2[i]=kari[1]; } fclose(fp);       ・       ・       ・ fclose(fp); } ---------------------------------------------- しかし、テキストファイルの初めの3行には不必要な文字列が存在するため、4行目から読み込むように設定したいのですが、やり方がよく分かりません。 どのようにプログラムを書き換えれば良いか、教えていただけると助かります。 よろしくお願いします。

  • C言語 ファイル入出力について

    test.txtというテキストファイルに入力されている文字を読み込んでtest1.txtに7文字になったなら改行して2行目に書き込み、また2行目が7文字以上になったら3行目に書き込むというプログラムを作りたいのですがどうもうまくいきません。色々ネットで探したりしたのですがstrlenをうまく使うのかな~ぐらいしか見当はつきません・・・。 何かよいアドバイスをお願いします!m(_ _)m 例 test.txt --------------------------------- 私の一番好きな食べ物はリンゴです。 --------------------------------- ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ test1.txt ---------------------------------- 私の一番好きな 食べ物はリンゴ です。 ----------------------------------

  • VC++の初心者です。VC++のバイトの数え方の質問です。

    VC++の初心者です。VC++のバイトの数え方の質問です。 テキストファイルをfgetで1行づつ読み込んだとき、その1行づつのバイト数が知りたいのです。 テキストファイルはSHIFT_JISです。丸投げみたいで心苦しいのですが、 簡単なアドバイスでもよろしいので、ご教授のほどよろしくお願い致します。

  • C言語についてです。

    C言語についてです。 次のようなテキストファイルがあるとします。 ------------------------------------- Sample.txt ------------------------------------- 項目一  項目二  項目三 1      2     1 2      1     3 3      3     1 ------------------------------------- 一行目が文字列、2行目以降が整数というファイルです。 このファイルを読み込み、1行目の文字列を表示し、2行目以降を読み込んでn行3列の配列に入れ更に表示したいのですが、どのように書けばいいのでしょうか? 宜しくお願いします。

  • 【C言語】テキスト読み込みの行変更

    教えて下さい。 テキストファイルから読み込む際の行変更の上手いやり方が分かりません。 今回C言語、コンソールでテキストファイルから1行ずつ読み込み表示させようと思っています。 その際ランダムで得た数値を行数とし、ズらした行の一文を表示させたいです。 例)ランダムで得た値=2、表示させたい文=2行目 添付した画像だと文字数(バイト数)が固定なのでfseekの第二引数は楽なのですが、使用したいテキストファイルはバイト数がバラバラ(半角、全角ごちゃ混ぜ)なのでfseekの第二引数も文によっては変わってしまい、どのように変えていけば良いかが分かりません。 教えて下さい。

コロナ感染者の症状と治り方
このQ&Aのポイント
  • コロナ感染者の症状として、喉の乾燥感や体のだるさ、寒気、軽い咳が出ることがあります。症状は個人によって異なりますが、陽性と判定された後に咳がひどくなり、味覚や食欲が低下することもあります。
  • コロナ感染者の治り方は個人によって異なりますが、一般的には1週間程度で症状が軽くなり、2週間程度で完全に回復することが多いです。しかし、体力や免疫力によって回復までの期間は変わることもあります。
  • コロナ感染者の早期治療としては、安静に過ごし、十分な水分補給と栄養摂取を行うことが重要です。また、症状が重い場合や悪化する場合は、医師の指示に従って治療を受ける必要があります。陰性と判定された後も、回復まで十分な注意と予防策を取ることが大切です。
回答を見る