C言語のfscanf, fprintf関数を使用してtxtファイルの内容を読み込んで、別のテキストファイルに書き込むプログラムを作成しています。
ソースコードと読み込むtxtファイルの内容は以下の通りです。
C言語
1#include<stdio.h> 2#include<stdlib.h> 3#define STRLEN 100 4 5int main(void){ 6 7 FILE *infp, *in_fp, *out_fp1, *out_fp2; 8 char name[STRLEN]; 9 char gender[STRLEN]; 10 int age = 0; 11 int count = 0; 12 double ave = 0.00; 13 14 infp = fopen("meibo.txt", "r"); 15 16 if(infp == NULL){ 17 fprintf(stderr, "Error : File is not open:errno:%d\n", errno); 18 exit(1); 19 } 20 21 while(fscanf(infp, "%s%d%s",name, &age, gender) != EOF){ 22 count ++; 23 ave += age; 24 } 25 ave = (double)ave / count; 26 fclose(infp); 27 28 in_fp = fopen("meibo.txt", "r"); 29 out_fp1 = fopen("meibo_h.txt", "w+"); 30 out_fp2 = fopen("meibo_l.txt", "w"); 31 if(in_fp == NULL || out_fp1 == NULL || out_fp2 == NULL){ 32 fprintf(stderr, "Error : File is not open:errno:%d\n", errno); 33 exit(1); 34 } 35 while(fscanf(in_fp, "%s%d%s",name, &age, gender) != EOF){ 36 printf("%s %d %s\n",name, age, gender); //・・・① 37 if(age >= ave){ 38 int result_h = fprintf(out_fp1, "%s %d\n", name, age); 39 printf("result=%d\n", result_h); //・・・② 40 }else{ 41 int result_l = fprintf(out_fp2, "%s %d\n", name, age); 42 printf("result=%d\n", result_l); //・・・③ 43 } 44 } 45 printf("*****結果*****\n"); 46 printf("人数:%d人 平均年齢:%.2f才\n", count, ave); 47 printf("-----平均以上-----\n"); 48 while(fscanf(out_fp1, "%s%d%s", name, &age, gender) != EOF){ 49 printf("%d\n", name); //・・・④ 50 } 51 printf("**************\n"); 52 53 fclose(in_fp); 54 fclose(out_fp1); 55 fclose(out_fp2); 56 57 return 0; 58}
-------meibo.txt start--------
Yamada 20 man
Satou 60 woman
Suzuki 28 man
Tanaka 56 man
Aoki 44 woman
Saitou 25 man
Kobayashi 45 man
Hashimoto 53 woman
Yamaguchi 34 woman
-------meibo.txt end--------
①のprint文では読み込んだ名前、年齢、性別の情報が表示され
②,③のprint文では正の値が表示され、特にエラーは無いように思います。
しかし、書き込み先のtxtファイルであるmeibo_h.txtとmeibo_l.txtは真っ新な状態のままです。
最終的にmeibo_h.txtの内容を読み込み④で表示したいのですが
meibo_h.txtが空なので、当然表示されません。
何が問題なのか、どなたかご教示をよろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/03 08:07
2018/07/03 08:15
2018/07/03 08:17
2018/07/03 08:25
2018/07/03 08:46
2018/07/03 11:18
2018/07/04 01:29
2018/07/04 01:35