

じゃんけんをした対戦結果（勝数、負数、引き分け数）をファイルに書き込み、その合計を読み込みたいのですが、勝数だけ合計が出力され、負数と引き分けた数は試合ごとに初期化？されてしまいます。  
試合ごとの対戦結果をファイルに書き込むところまではできているので、今までの対戦戦績の合計を出力させたいです。

正しい書き方がわかるかたがいらっしゃれば教えていただきたいです。よろしくお願いします。

[code]

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include "jankendata.txt"
    
    int main(void)
    {   
        int win=0, lose=0, draw=0;
        int wsum=0, lsum=0, dsum=0;
        FILE *fp;
        if ((fp = fopen("jankendata.txt", "r"))==NULL){
            printf("ファイルをオープンできませんでした.\n");
        } else {
            while (fscanf(fp, "%d%d%d", &win, &lose, &draw)!=EOF)
            wsum = wsum + win;
            lsum = lsum + lose;
            dsum = dsum + draw;
            printf("%d勝  %d敗  %d引き分け\n", wsum, lsum, dsum);
            fclose(fp);
        }
        
        //自分が出す手の選択
        int me, npc, result;
        printf("あなたが出す手を選択-＞\n【グー】：０【チョキ】：１【パー】：２終了する：３\n");
        scanf("%d", &me);
    
        if (me==0||me==1||me==2){
            srand(time(NULL));
            npc = rand() % 3;
            printf("相手は%dを出した！\n", npc);    
        } else if(me==3){
            printf("終了します。\n");
            exit(0);
        } 
    
            
         result = (me - npc + 3) % 3;
        
        int w=0, l=0, d=0;
        if (result == 2){
            printf("あなたの勝利\n");
            w++;
        } else if (result == 1){
            printf("あなたの負け\n");
            l++;
        } else if(result == 0) {
            printf("引き分け\n");
            d++;
        }
    
        if ((fp = fopen("jankendata.txt", "a+"))==NULL){
            printf("ファイルをオープンできませんでした。\n");
        } else {
            fprintf(fp, "%d %d %d\n", w, l, d);
            fclose(fp);
        }
    
        return EXIT_SUCCESS;
    }
    
    
[/code]


CC BY-SA 4.0
2021-11-17T10:00:33.887
83676
2021-11-17T11:32:45.053
2021-11-17T11:29:29.677
40856
49063
question
c
C言語　ファイルの読み込み／書き込みについて


while文が囲めていないのが問題ですね。

[code]

    while (fscanf(fp, "%d%d%d", &win, &lose, &draw) != EOF) {
        wsum = wsum + win;
        lsum = lsum + lose;
        dsum = dsum + draw;
    }
    
[/code]

## 別の話

`#include "jankendata.txt"`は必要ないですね。

`#include`は使用するファイルを記述するのではなく、使用するプログラムファイルを記述します。


CC BY-SA 4.0
2021-11-17T11:14:12.510
83681
2021-11-17T11:32:45.053
2021-11-17T11:32:45.053
40856
40856
83676
answer