前提・実現したいこと
既存のファイルからデータを読み取って、合計点と合否を出し、その結果を別のファイルに出力したいです。
発生している問題・エラーメッセージ
既存のファイル(kison.data)に入っているデータから合計・合否を追加したものを別のファイル(betu.data)に出力しようとしたのですが、うまくいきません。
$ cat kison.data
1 22 23
2 55 78
3 89 90
$ cat betu.data
1 22 23 45 不合格
2 55 78 133 合格
3 89 90 179 合格
3 89 90 179 合格
のように最後がおかしくなってしまいます。。。
該当のソースコード
include <stdio.h>
int main(void){
FILE *fp_r,*fp_w;
int eng,math,num,sum;
if((fp_r=fopen("kison.data","r"))==NULL){
printf("ファイルを開けません\n");
}
else if((fp_w=fopen("betu.data","w"))==NULL){
}else{
while( !feof(fp_r)){
fscanf(fp_r,"%d%d%d",&num,&eng,&math);
sum=eng+math;
if(sum>=120){
fprintf(fp_w,"%d %d %d %d 合格 \n",num,eng,math,sum);
}else{
fprintf(fp_w,"%d %d %d %d 不合格 \n",num,eng,math,sum);
}
}
fclose(fp_w);
fclose(fp_r);
}
return 0;
}
試したこと
1つ目のif文でNULLが出た時にプログラムが終了していないことに気づいて、betu.dataを開くif文をelse if文に書き換えたとたんにこの現象が現れました。
なので、タップミスか何かでループ本体を触ってしまったのかと思い、書き換える前に戻してみたりもしましたが、一向に直りませんでした。
自分でもどうしてこうなるのか本当にわからなくて、行き詰っています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/06 17:04