• ベストアンサー

C言語のプログラムについて質問です。

C言語初心者で困っています。 テキストデータの上から3行分を飛ばして、4行目から読み込むようにするにはどのようなプログラムを書けば良いでしょうか? ちなみにデータは2列、100003行あります。 よろしくお願いします。

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

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

No1です。 これだとエラーになりません? 最初のforがファイルが複数という意味のループであれば //ループカウンタ int idt = 0; //読込みファイル名の設定// 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);   }   else   {     //データの読込み//     //for(i=0;i<SN;i++) SNの用途が分からないのでwhileに置き換え     //kari[0]とkari[1]は1行目の中の文字列2つ(データ2列)なので行ではない     while(( ret = fscanf(fp,"%lf,%lf\n",&kari[0],&kari[1])) != EOF)     {       // 4行目以降を読み込む       if(idt > 2)       {         ch1[i]=kari[0]; //データ列1つ目         ch2[i]=kari[1]; //データ列2つ目       }       //ループカウンタをインクリメント       idt++;     }     //ファイルクローズ     fclose(fp);   } } ※インデントは全角スペース 特に見直しはしてないので、何かエラーが出たらごめんなさい。 とりあえず複数ファイルではなく1ファイルをループしてデータを取ってくる処理を作ってみるのがいいと思います。

その他の回答 (3)

回答No.4

No3を書いたのはNo1さんではんくNo2でした。 あまり気にしないでください(苦笑)

回答No.2

ファイルの読み込み方法はfgetsの他にもあるので、 とりあえずの一例として考えてください //ループカウンタ i=0; fp = fopen(fname , "r");  while (fgets(buf,256,fp) != NULL){   //0,1,2の場合は飛ばす(3行分)   if(i<3){    i++;    continue;   }   //   // 読み込み後の処理   //  } fclose(fp); ※スペース部分は全角

4845454
質問者

補足

自分のプログラムにどう当てはめて良いか、よく分からないです。 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); ---------------------------------------------- しかし、テキストファイルの初めの3行には不必要な文字列が存在するため、4行目から読み込むように設定したいのですが、やり方がよく分かりません。 どのようにプログラムを書き換えれば良いか、教えていただけると助かります。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>テキストデータの上から3行分を飛ばして、4行目から読み込むようにするにはどのようなプログラムを書けば良いでしょうか? 通常と同じ手順で3行読み込んで、そのデータは使わない。

関連するQ&A

  • 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言語のテキストファイルの読込み

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

  • C言語のプログラム集

    こんにちは。C言語のテキストにはプログラムとその説明が書いていますが、 このC言語のプログラムが多くのっているような本はありますか?本屋さんで探したのですが、プログラムがものすごく多くのっているようなものがなかったので、もしお分かりの方がおられましたが、本の紹介をお願いします。

  • 初心者のC言語

    私は、昨日からC言語を勉強し始めました。 大学の教授から2週間以内に50行程度のCプログラムを書けるようになって こいと指示を受けましたが、C言語をやったことが無いので、どのような勉強を すればいいのか分かりません。 初心者にも分かりやすいC言語のテキストやサイトを知っている方がいれば 教えてください。 お願いします。

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

    C言語の初心者です。 i=0~nまでのデータch1[i]の中から、負の値の個数を抽出したい場合、どのようにプログラムを書けばよいでしょうか? よろしくお願いします。

  • C言語でアナグラムを求めるプログラム

    C言語初心者で、勉強中です。 今アナグラムを求めるプログラムをC言語で作成しています。 内容はあらかじめある英単語が書いてあるテキストファイルから互いにアナグラムとなっている英単語をすべて求めてそれを出力するというプログラムです。 どこから手をつけていいかわからず悩んでいます。 そこでヒントをいただこうと思って質問しました。 どなたか回答よろしくお願いします。

  • C言語でのプログラム

    23481 34958 432 ・・・   83829 93828 210 ・・・     ・     ・    ・   ・     ・    ・   ・     ・    ・ 上の様に各列に対して決まったビット数で表示されている数値のデータの 一番最後の桁(一番上の行なら 1、8、2)を消去するプログラムを 作りたいのですが、 各数値の間にスペースがあるので、ヌルコードの一つ手前の数値を消去すると考えたほうが良いのか、それともビット数(桁数)が決まっているので各列に対して最後の桁を指定して消去した方が良いのでしょうか? また、その「消去する」という プログラムには何の関数を使ったら良いのでしょうか? このプログラムへの取っ掛りが見つからず、困っています。よろしくお願いします。

  • C言語についてです。

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

  • C言語でのプログラムの作り方

    はじめまして。C言語初心者の中学一年生です。 C言語でプログラムを作ろうと思ったのですが、やり方がわかりません。 ”hello”と表示するプログラムの作り方を教えてください。 使用しているコンパイラは"Visual C++ 2010"です。パソコンはWindows xpです。 中学生でも分かるように教えてください。 エディエタ、やソースプログラムなどの用語についても教えてくださると嬉しいです。

  • C言語初心者過ぎてわからないです

    エクセルのCSVデータなんですが 1行目のデータを 1行目から5行目まで同じデータ 6行目のデータを 6行目から10行目まで同じデータ 10行目のデータを 10行目から15行目まで同じデータ 以上のような作業を繰り返し元のCSVのデータをすべて5行(つまりデータの量は5倍)にしたいのですが C言語でこのような作業を行うファイルをつくるにはC言語ではどのようなプログラムになるでしょうか

専門家に質問してみよう