FILE *hoge;
hoge=fopen("fuga.txt", "r");
ファイルからデータの読み込みととキーボードからのデータ読み込みを並べて書くと
となる.ファイルポインターを指定する以外,すべてキーボード入力の場合と同じである. 例えば,
ファイル入力 int fscanf(ファイルポインター,書式指定,引数並び) キーボード入力 int scanf(書式指定,引数並び)
fscanf(hoge, "%d%lf", &i, &d);
出力もまったく同じである.
例えば,プログラムは,次のように書く.
ファイル出力 int fprintf(ファイルポインター ,書式指定,引数並び) ディスプレイ出力 int printf(書式指定,引数並び)
fprintf(hoge, "%d\t%f\n", i, d);
fclose(hoge);
1 #include <stdio.h> 2 #include <math.h> 3 4 int main(void) 5 { 6 FILE *out_file; // FILE型のポインターの宣言 7 double x, y1, y2, y3; 8 double dphi; 9 int i, n; 10 11 n = 360; 12 13 dphi = 2*M_PI/n; 14 15 out_file = fopen("trifunc.txt","w"); //ファイルのオープン 16 17 for(i=0; i<n; i++){ 18 x=i*dphi-M_PI; 19 y1 = sin(x); 20 y2 = cos(x); 21 y3 = tan(x); 22 fprintf(out_file, "%e\t%e\t%e\t%e\n", x, y1, y2, y3); //書き込み 23 } 24 25 fclose(out_file); //ファイルのクローズ 26 27 return 0; 28 }
-3.141593e+00 -1.224606e-16 -1.000000e+00 1.224606e-16 -3.124139e+00 -1.745241e-02 -9.998477e-01 1.745506e-02 -3.106686e+00 -3.489950e-02 -9.993908e-01 3.492077e-02 -3.089233e+00 -5.233596e-02 -9.986295e-01 5.240778e-02 -3.071779e+00 -6.975647e-02 -9.975641e-01 6.992681e-02 -3.054326e+00 -8.715574e-02 -9.961947e-01 8.748866e-02 -3.036873e+00 -1.045285e-01 -9.945219e-01 1.051042e-01 この辺は長いので省略 3.089233e+00 5.233596e-02 -9.986295e-01 -5.240778e-02 3.106686e+00 3.489950e-02 -9.993908e-01 -3.492077e-02 3.124139e+00 1.745241e-02 -9.998477e-01 -1.745506e-02
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(void) 5 { 6 FILE *in_file; 7 double x[500], y1[500], y2[500], y3[500]; 8 double sum2_x=0, sum2_y1=0, sum2_y2=0, sum2_y3=0; 9 int i=0; 10 11 12 in_file = fopen("trifunc.txt","r"); 13 14 while(fscanf(in_file, "%lf%lf%lf%lf",&x[i], &y1[i], &y2[i], &y3[i])!=EOF){ 15 sum2_x += x[i]*x[i]; 16 sum2_y1 += y1[i]*y1[i]; 17 sum2_y2 += y2[i]*y2[i]; 18 sum2_y3 += y3[i]*y3[i]; 19 i++; 20 } 21 22 fclose(in_file); 23 printf("ave x^2=%f\n",sum2_x/i); 24 printf("ave y1^2=%f\n",sum2_y1/i); 25 printf("ave y2^2=%f\n",sum2_y2/i); 26 printf("ave y3^2=%f\n",sum2_y3); 27 28 29 return 0; 30 }
ave x^2=3.289919 ave y1^2=0.500000 ave y2^2=0.500000 ave y3^2=533454075936799969852241897062400.000000