- 締切済み
テキストファイルを配列に
始めまして C言語にてテキストファイルの中身を読み込み一次元配列に代入するというシステムを作ろうとしているのですがわかりません テキストファイルの中身は 12 5312 72 7 444 53 7884 といった具合で100数行あり一行ごとに配列に入れたいです 勉強を始めたばっかりで本を見ても書いていなく困っています わかるかたご指導願えますか? よろしくお願いいたします
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ellipt01
- ベストアンサー率0% (0/2)
テキストファイルの中のデータ(int型?)を読み込みたいんでしょうか?だったらNo.3の方の言うようfopen、fgets で各行をリード用のバッファに読み込み sscanf で型指定して再度バッファからintデータを抜き出しましょう。 size_t i; // データのカウンタ。ほんとはもっと分かりやすい言葉にした方が良いでしょうね。 char buf[BUFSIZ]; // BUFSIZでなくても当然いいんですが今日ビどうでも良い? FILE *fp; size_t n = xxxx; // データ数(より多い数?その場合 i を無くさないように) int data[n]; // データを格納する1次元配列 if ((fp = fopen ("データファイル名", "r")) == NULL) return; i = 0; while (fgets (buf, BUFSIZ, fp) != NULL) { sscanf (buf, "%d", &data[i]); // intデータ一個だけならatoi とかでも良いのでしょう。 if (++i >= n) break; // 想定以上にデータが多かったらそこで読み込みを止めます。 } fclose (fp); データ数が未知なら、データ(ファイルの空とかでない行)数を先にカウントして動的に領域確保する、等という事も勉強を進めるうちいずれ出てくると思います。
- vipasigaru
- ベストアンサー率38% (16/42)
文字列の扱い方はわかりますか? C言語では、文字列は「char型の配列」で実現します。 ですので、例の場合は、たとえば一次元配列 char a[64]; の配列に入れることができるのは、 12 の一行分のデータだけです。 ですので、普通は「複数行の文字列」は、二次元配列で実現します。 char b[1024][64]; について、一行ずつつめていきます。 次に、ファイルアクセスの方法はわかりますか? たとえば、fopenでファイルを開き、fgetsで一行読み込みを行います。 あとは、上記の単語で検索をかければ、大体使い方がわかるはずです。 ってことで、、 int i; FILE fp = fopen("読み込むファイル名", "r"); for(i = 0; fgets(b[i], sizeof(b[i]), fp); i++); fclose(fp); のような感じで、読み込むことができるんじゃないでしょうか
- f272
- ベストアンサー率46% (8467/18126)
http://wisdom.sakura.ne.jp/programming/c/index.html これでも読んでください。 それでもわからなかったら,もう一度,質問してね。
- notnot
- ベストアンサー率47% (4900/10358)
1行だけのファイルを読んで、配列で無い変数にいれるのはわかりますか?
補足
ごめんなさい初歩の初歩で・・ テキストファイルから読み込婿と自体初めてで全くわかりません・・・