• 締切済み

おしえて

#include <stdio.h> #include <stdlib.h> int a[30000][6]; int main(int argc, char *argv[]) { FILE *fp; int c,n,i,j; if ((fp = fopen(argv[1], "r")) == NULL) { printf("File Open Error.\n"); exit(1); } for(i=0;i<30000;i++){ for(j=0;j<6;j++){ c = fscanf(fp, "%d", &n); if (c) { a[i][j]=c; printf("%d ",a[i][j]); } } printf("\n"); } fclose(fp); return 0; } このプログラムを書きましたna.txtのファイルが以下のようなとき 1 2 3 4 5 6 3 4 5 6 7 8 のとき先頭の1しか配列に格納できません。どうしても順番にa[0][0~5]=1~6と入れたいです。どうしてもわかりません。おしえてください!!

みんなの回答

回答No.4

#1さんがおっしゃっている通り c = fscanf(fp,"%d",&n); ↑はファイルから読み込まれた値がnに格納されているので、その次の文では if (n){ a[i][j]=n; と書かれたほうがよろしいかと。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>でも、僕がしたいのはcの値ではなく(それは事前にわかっているので。)次々にその値を配列にいれたいのですよ だから n

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.2

前の質問、ひどいですね。お礼もポイントも無しで締め切って、次の質問ですか。マナーは守らないと誰も回答してもらえませんよ。 >でも、僕がしたいのはcの値ではなく(それは事前にわかっているので。)次々にその値を配列にいれたいのですよ なら、cではない何かを代入してください。 >a[i][j]=c 思いついたら、この質問の補足か前の質問のお礼にお願いします。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1578330
benzousandazoyo
質問者

お礼

ありがちょ!!

benzousandazoyo
質問者

補足

それがわからないからこまってるんですが、、。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

c = fscanf(fp, "%d", &n); で、読み込んだ値が代入されるのは、n です。 c には、読み込み、代入が成功した(要素)数が代入されます。

benzousandazoyo
質問者

補足

でも、僕がしたいのはcの値ではなく(それは事前にわかっているので。)次々にその値を配列にいれたいのですよ ./a.out na.txtで読み込んで入れたいのです。これではすべての配列に最初の1が入るのみです