プロが教える店舗&オフィスのセキュリティ対策術

始めまして
C言語にてテキストファイルの中身を読み込み一次元配列に代入するというシステムを作ろうとしているのですがわかりません
テキストファイルの中身は
12
5312
72
7
444
53
7884
といった具合で100数行あり一行ごとに配列に入れたいです
勉強を始めたばっかりで本を見ても書いていなく困っています
わかるかたご指導願えますか?
よろしくお願いいたします

A 回答 (4件)

テキストファイルの中のデータ(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);

データ数が未知なら、データ(ファイルの空とかでない行)数を先にカウントして動的に領域確保する、等という事も勉強を進めるうちいずれ出てくると思います。
    • good
    • 0

文字列の扱い方はわかりますか?


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);
のような感じで、読み込むことができるんじゃないでしょうか
    • good
    • 0

http://wisdom.sakura.ne.jp/programming/c/index.h …
これでも読んでください。
それでもわからなかったら,もう一度,質問してね。
    • good
    • 0

1行だけのファイルを読んで、配列で無い変数にいれるのはわかりますか?

この回答への補足

ごめんなさい初歩の初歩で・・
テキストファイルから読み込婿と自体初めてで全くわかりません・・・

補足日時:2012/08/24 21:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!