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