No.15674![]() |
ファイルの読み込み 投稿者---れごば(2004/07/20 01:03:09) |
||
5 3 0 0 5 2 90000 01262 01102 上のように書かれているファイルtest.txtがあり、 一行目は4行めからの数列の桁数と行数を表しています。 ファイルをオープンしたあと1行目の5を「yoko」へ 3を「tate」へ代入し、 2、3行目も同じようにそれぞれの変数へ代入します。 また、4行目以降は aa[0][0]=9 aa[0][1]=0・・・・aa[2][4]=2 のように一文字ずつ配列に入れていきたいのですが、 1〜3行目のスペースの飛ばし方と 配列への入れ方を教えてください。 |
No.15675![]() |
Re:ファイルの読み込み 投稿者---かずま(2004/07/20 01:22:27) |
||
> 1〜3行目のスペースの飛ばし方と > 配列への入れ方を教えてください。 scanf の "%d" を使えば、スペースや改行を読み飛ばしてくれます。 1文字ずつ読み込ませるためには "%1d" を使えばよいでしょう。 tate と yoko に制限をつけてよいのなら、次のようなプログラムになります。 無制限にしたいというのなら、プログラムは難しくなります。 #include <stdio.h> #define N 64 int main(void) { int i, j, yoko, tate, v1, v2, v3, v4, aa[N][N]; FILE *fp = fopen("text.txt", "r"); if (fp == NULL) return 1; if (fscanf(fp, "%d%d", &yoko, &tate) != 2) return 1; if (yoko > N || tate > N) return 1; if (fscanf(fp, "%d%d%d%d", &v1, &v2, &v3, &v4) != 4) return 1; for (i = 0; i < tate; i++) for (j = 0; j < yoko; j++) if (fscanf(fp, "%1d", &aa[i][j]) != 1) return 1; for (i = 0; i < tate; i++) { for (j = 0; j < yoko; j++) printf(" %d", aa[i][j]); printf("\n"); } return 0; } |
No.15678![]() |
Re:ファイルの読み込み 投稿者---れごば(2004/07/20 02:03:49) |
||
ありがとうございます。 tateとyokoのに入る数には制限があるのでこのプログラムでいいと思います。 書き込みは出来たのに読み込みが出来なくて困っていたので助かりました。 |