前提・実現したいこと
プログラミング初心者です。現在C言語を学習しています。
正の整数を入力して、ファイルにその数値が存在しない場合、新しい行に書き加え、負の整数が入力されるまでその処理を繰り返し、2回目以降のプログラム実行でもファイル数値は保存されているようにするというプログラムを作成したいと持っています。助けていただけると幸いです。
発生している問題・エラーメッセージ
ファイルに何も記載されていない状態だとうまく動いているようなのですが、2回目以降の実行時に前回入力した数値が上書きされてしまいます。
該当のソースコード
C
1 2#include <stdio.h> 3 4int main(){ 5 printf("ファイルの数値を確認し、新しい数値のみ記録する。\n"); 6 FILE *FP; 7 FP=fopen("inputLog.txt", "w"); 8 fclose(FP); 9 int num, Log, judge, count, loop, i; 10 11 12 if((FP=fopen("inputLog.txt", "r"))==NULL){ 13 return -1; 14 }else{ 15 do{ 16 count++; 17 }while(fscanf(FP, "%d", &Log)!=EOF); 18 } 19 fclose(FP); 20 21 22 do{ 23 printf("記録したい正の整数を入力してください。また、正でない整数が入力されるとプログラムを終了します。: "); 24 scanf("%d", &num); 25 FP=fopen("inputLog.txt", "r"); 26 for(loop=0;loop<count;loop++){ 27 fscanf(FP, "%d", &Log); 28 if(num==Log){ 29 printf("この数値はすでに記載されています。\n"); 30 fclose(FP); i=-1; break; 31 }else if(num<0){ 32 printf("プログラムを終了します。\n"); 33 judge=-1; fclose(FP); i=-1; break; 34 } 35 }if(i!=-1){ 36 fclose(FP); 37 FP=fopen("inputLog.txt", "a"); 38 fprintf(FP, "%d\n", num); 39 fclose(FP); 40 count++; 41 } 42 }while(judge!=-1); 43 return 0; 44} 45 46
試したこと
fopen()で"a"を使いましたが上書きされてしまいます。
補足情報(FW/ツールのバージョンなど)
Xcodeでプログラミングしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/22 11:05
2019/10/22 11:06
2019/10/22 11:10
2019/10/22 11:22 編集
2019/10/25 03:22
2019/10/25 03:35 編集
2019/10/25 09:23
2019/10/25 09:26
2019/10/25 09:31
2019/10/25 18:51