- 締切済み
おしえて
#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と入れたいです。どうしてもわかりません。おしえてください!!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- lailai2580
- ベストアンサー率64% (16/25)
#1さんがおっしゃっている通り c = fscanf(fp,"%d",&n); ↑はファイルから読み込まれた値がnに格納されているので、その次の文では if (n){ a[i][j]=n; と書かれたほうがよろしいかと。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>でも、僕がしたいのはcの値ではなく(それは事前にわかっているので。)次々にその値を配列にいれたいのですよ だから n
- OsieteG00
- ベストアンサー率35% (777/2173)
前の質問、ひどいですね。お礼もポイントも無しで締め切って、次の質問ですか。マナーは守らないと誰も回答してもらえませんよ。 >でも、僕がしたいのはcの値ではなく(それは事前にわかっているので。)次々にその値を配列にいれたいのですよ なら、cではない何かを代入してください。 >a[i][j]=c 思いついたら、この質問の補足か前の質問のお礼にお願いします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
c = fscanf(fp, "%d", &n); で、読み込んだ値が代入されるのは、n です。 c には、読み込み、代入が成功した(要素)数が代入されます。
補足
でも、僕がしたいのはcの値ではなく(それは事前にわかっているので。)次々にその値を配列にいれたいのですよ ./a.out na.txtで読み込んで入れたいのです。これではすべての配列に最初の1が入るのみです
お礼
ありがちょ!!
補足
それがわからないからこまってるんですが、、。