• ベストアンサー

C言語 テキストファイルの文字列を配列に代入したい

aaa.txt というテキストファイルがあり、その中身が 8 5 21 13 であるとします(1行のみ)。 main関数内で宣言した整数の配列、 int A[10]; に対して、 A[0]=8 A[1]=5 A[2]=21 A[3]=13 のように代入したいのですが、どのファイルポインタの関数を使ってどのように書けばいいのかわかりません。 ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.1

最良の方法かどうかはわかりませんが、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]);   } }

marriess
質問者

お礼

回答ありがとうございます。 おかげさまで、fscanfを用いてできました。

その他の回答 (2)

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.3

久しぶりに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; }

marriess
質問者

お礼

回答ありがとうございます。おかげさまで出来ました。 細かく書いてくださったプログラムも参考にさせていただきます。

  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.2

補足:テキストファイルのファイル名が「data.dat」でしたが、「aaa.dat」に置き換えて下さい。

関連するQ&A