###前提・実現したいこと
c言語でアドレス帳のプログラムを作っているのですが、テキストファイルに保存されたデータを一覧表示する機能と新たにデータを追加する機能を実現したいと思っています。ソースコードにこの後実現しようと思っている検索機能に関する記述がありますが無視してください。
テキストファイルの中は次の様になっています。
1 a 1111
2 b 2222
3 c 3333
4 d 4444
5 e 5555
###発生している問題・エラーメッセージ
最初はデータの一覧表示は成功していたのですが、case'b':のデータの追加機能を追加すると一覧表示がされなくなりました。その際データの追加は正常に動作します。コンパイルはエラーになりません。
調べてみたところ、case'b':のscanf("%d %s %ld", &per.id, per.name, &per.phone);とfprintf(fp, "%d %s %ld\n", per.id, per.name, per.phone);のどちらかがあると一覧表示ができなくなるようです。
###該当のソースコード
c
1#include <stdio.h> 2struct person{ 3 int id; 4 char name[40]; 5 long phone; 6}; 7 8int main(void){ 9FILE *fp; 10char fg, s[50], s2[50]; 11int n; 12struct person per; 13 14 while(1){ 15 printf("モード入力:"); 16 scanf("%c", &fg); 17 while(fg == '\n')scanf("%c", &fg); 18 19 switch(fg){ /*モード判定*/ 20 21 case 'a': 22 printf("一覧表示\n"); 23 fp = fopen("adk.txt","r"); 24 while(fgets (s, n, fp) != NULL){ 25 printf("%s", s); 26 } 27 fclose(fp); 28 break; 29 30 case 's': 31 printf("名前検索\n"); 32 break; 33 34 case 'b': 35 printf("データ追加\n"); 36 fp = fopen("adk.txt","a"); 37 scanf("%d %s %ld", &per.id, per.name, &per.phone); 38 fprintf(fp, "%d %s %ld\n", per.id, per.name, per.phone); 39 fclose(fp); 40 break; 41 42 case 'q': 43 printf("終了\n"); 44 return -1; 45 46 } 47 } 48return 0; 49}
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
Ubuntuにてプログラミングしています
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/22 05:40