• ベストアンサー

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

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

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

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

>for(i=1;i<=30;i++){ >fscanf(fp, "%lf %lf・・・ %lf\n", &n1, &n2,・・・,&n30); >} 配列使って、多重ループにするのが普通…かと。 for(i=0;i<30;i++) {  for(j=0;j<30;j++) {   fscanf(fp, "%lf", &a[i][j]);  } } って感じでしょうかね。 入力テキストの形式が異なる場合などのエラー処理は必要でしょうが…。

ramusi
質問者

お礼

ありがとうございました。 言われてみればその通りですね、確かに。 ちょっとボケてました。。。 どうもありがとうございました!

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

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「30個も書かなければならない」がどういう方法を想定しているのかわかりかねますが, 単なるループではだめ?

ramusi
質問者

補足

すいません、説明不足でした。 「30個も書かなければならない」というのは、例えば for(i=1;i<=30;i++){ fscanf(fp, "%lf %lf・・・ %lf\n", &n1, &n2,・・・,&n30); } としなければならないのかなぁ、と思ったのですが、 これをループをつかって上手いことできるでしょうか?

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

関連するQ&A

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

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

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

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

  • C言語でのファイル読み込み

    C言語でのファイル読み込みに関してお尋ねしたいことがございます。 たとえば、「test1.dat」というような数字が複数行記載されたデータファイルがあり、 それを配列に読み込んで作業をしたのちに、 同じ作業を「test2.dat」「test3.dat」・・・というようなデータファイル (これらも、test1とは異なる数字が複数行記載されたデータファイル)にも 施したい場合、どのようなループ処理をすればよいのでしょうか? perlの場合ですと比較的簡単にできたのですが、 Cの場合はどうしたらいいかわかりません。 どうぞよろしくお願いいたします。

  • C言語についてです。

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

  • C言語 CSVファイルの読み込み

    C言語でCSVファイルから数字を読み込み、それを計算するというプログラムを作りたいのですが、CSVファイルについて全く知識が無く、加えてCSVファイルを利用したプログラムを作るのが初めての為、勝手がわかりません。 まずCSVファイルというのは、 1.2,2.3,3.4 4.5,5.6,6.7 7.8,8.9,9.0 といった数字(文字列)をカンマで区切ったテキストファイルですよね? それをどのようなプログラムで読み込むのでしょうか? 例えば、上記の数字を読み込み、 a. 1.2+4.5+7.8=x b. 8.9-5.6-2.3=y c. 3.4*6.7*9.0=z と計算する場合のプログラムを教えていただきたいです。 よろしくお願いします。

  • C#のテキストファイル読み込みについて

    C#のテキストファイル読み込みについて 2次元配列を使います(a[行][列]みたいに テキストファイルを1文字ずつ読み込みます。 そして、改行文字が見つかると行を1つずらします それを繰り返して最後まで読みこむと終わり そんなことをしたいです DOBON.NETでこんなの見つけたんですが 上の処理をしようと思っても、どこをいじればできるのかわかりませんでした //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容を一行ずつ読み込む while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } //閉じる sr.Close(); よくわかるサイトとかあったら教えてください、お願いします

  • Visual C++を 用いたテキストファイル読み込み(応用)

    Microsoft Visual C++ 2008 Express Editionを使っています。 テキストファイルは 約5000行×6列の数値(のみ)になっております。(列間にスペースあり) いくつかある5000×6行テキストファイルの中から、ファイル名を入力することで任意のテキストファイルにアクセスし、さらに6列のデータをそれぞれ別の配列に格納するコンソールプログラムを考えていますが行き詰まっています。例えば、1列目を配列1、2列目を配列2、・・・といった具合です。 詳しい方、どうかよろしくお願いいたします。

  • C言語 CSVファイルの読み込み

    前回の質問が説明不足だった為、こちらでもう一度詳しく補足を加え再度質問させていただきます。 ↓前回の質問 http://okwave.jp/qa/q6352672.html 読み込むCSVファイルは数値のみです。 具体的な例として数値をあげさせていただきます。 例:ファイル名 test.csv 10,1.1,1.2,1.3 20,2.1,2.2,2.3 30,3.1,3.2,3.3 上記のような4列3行のCSVファイルをC言語を使用し、 10→a 1.1→b 1.2→c 1.3→d 20→e 2.1→f 2.2→g 2.3→h 30→i 3.1→j 3.2→k 3.3→l といった具合に、任意の列・行の数字を任意の場所へ読み込みをするということが出来ません。 例をプログラムにするとどのようになるのか教えていただきたいです。 よろしくお願いします。

  • ファイル操作

    あるファイルから長さの違った数字や文字を読み込んで配列に格納したいのですが数字などの長さが違うとなんかおかしくなってしまいます; 例えば 1 a 1 2 a 2 3 b 3 4 b 4 などのファイルはできるのですが 0 1 2 3 a 3 4 b 4 5 c 5 の場合5つの配列に格納したいのです。1行目で1つ2行目で1つ3行目の 左、真ん中、右の数字でそれぞれ1つづつ格納したいのです。 それで自分でやったのですが typedef struct path{ int left [100]; int right[100]; char center [100]; }Path; int main(int argc,char *argv[]) { FILE *fp; Path path; int i=0; int first; int second[100]; fp = fopen(argv[1],"r"); while(fscanf(fp,"%d %c %d",&path.left[i],&path.center[i],&path.right[i])==3){ i++; } fclose(fp); このようにやると3行目からはきちんとよみこむのですが1、2行目がうまくできません@@; firstとsecondのそれぞれ1、2行目を入れたいのです。 fscanfをもう1つ増やすしてもやってみましたがうまくいきませんでした。 ちなみにfscanf関数のところをならったばかりです。 fgetcとかそのようなのを使うのでしょうか?(よくわからないですけど) よろしくお願いします。ちなみにLinuxでgcc、C言語です。

  • C言語で、エクセルの中身を読みたい

    C言語で、エクセルやワードの中の文字列を読み込むにはどうしたら良いのでしょうか?テキストファイルからなら1行づつ読めるのですが、エクセルやワードファイルの中身をfgets関数やfread関数を使って読み込もうとしても、文字が化けたものしか取得できません。どのようにしたら良いか教えてください。お願いいたします。