- ベストアンサー
C言語 テキストファイルの文字列を配列に代入したい
aaa.txt というテキストファイルがあり、その中身が 8 5 21 13 であるとします(1行のみ)。 main関数内で宣言した整数の配列、 int A[10]; に対して、 A[0]=8 A[1]=5 A[2]=21 A[3]=13 のように代入したいのですが、どのファイルポインタの関数を使ってどのように書けばいいのかわかりません。 ご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
最良の方法かどうかはわかりませんが、fscanf()で、書式「%d」を使えばできますね。 #include <stdio.h> main() { int A[10]; FILE *fp; fp = fopen("data.dat","r"); fscanf(fp, "%d",&A[0]); fscanf(fp, "%d",&A[1]); fscanf(fp, "%d",&A[2]); fscanf(fp, "%d",&A[3]); int i; for(i = 0;i<4;i++) { printf("%d\n",A[i]); } }
その他の回答 (2)
- shiren2
- ベストアンサー率47% (139/295)
久しぶりにC言語で書いてみました。 参考にどうぞ。 #include <stdio.h> /* 未使用要素の値は-1とする */ #define UNUSED -1 int main(){ int A[10], i; const char *fname = "aaa.txt"; FILE *fp; /* ファイルfnameを開く */ if((fp=fopen(fname,"r"))==NULL){ perror(NULL); return -1; } /* 配列Aの初期化 */ for(i=0; i<sizeof(A)/sizeof(A[0]); i++) A[i] = UNUSED; /* fpからint要素を取り出して配列Aに入れる */ for(i=0; i<sizeof(A)/sizeof(A[0]); i++) if(fscanf(fp, "%d", &A[i])==EOF) break; /* 配列Aの中身を表示 */ for(i=0; A[i]!=UNUSED; i++) printf("%02d: %d\n", i, A[i]); return 0; }
お礼
回答ありがとうございます。おかげさまで出来ました。 細かく書いてくださったプログラムも参考にさせていただきます。
- gonbee774
- ベストアンサー率38% (198/511)
補足:テキストファイルのファイル名が「data.dat」でしたが、「aaa.dat」に置き換えて下さい。
お礼
回答ありがとうございます。 おかげさまで、fscanfを用いてできました。