きのうのプログラムに追加登録機能を実装した
auです。
今回は、きのうのプログラムに追加登録機能を実装し、追加で登録すると改行されないことに気づいたので修正をしました。
きのうの記事
program-shoshinsya.hatenablog.com
プログラム
#include <stdio.h> #include <stdlib.h> void new_reg(void) { int id = 0; char name[256]; char filename[] = "student.txt"; int count; char count_c[30]; FILE *fp; fp = fopen(filename, "w"); if (fp == NULL) { fprintf(fp, "ファイルを開くことができませんでした\n"); return EXIT_FAILURE; } else { printf("ファイルを開きました\n"); } printf("学籍番号: "); scanf("%d", &id); printf("氏名: "); scanf("%s", name); if (count < 0) { fprintf(fp, "ファイルの書き込みに失敗しました\n"); fclose(fp); return EXIT_FAILURE; } fprintf(fp, "id: %d name: %s\r\n", id, name); printf("%sへ書き込みました\n", filename); fclose(fp); return EXIT_SUCCESS; } // 今日追加したとこ void add_reg(void) { int id = 0; char name[256]; char filename[] = "student.txt"; int count; char count_c[30]; FILE *fp; fp = fopen(filename, "a"); if (fp == NULL) { fprintf(fp, "ファイルを開くことができませんでした\n"); return EXIT_FAILURE; } else { printf("ファイルを開きました\n"); } printf("学籍番号: "); scanf("%d", &id); printf("氏名: "); scanf("%s", name); if (count < 0) { fprintf(fp, "ファイルの書き込みに失敗しました\n"); fclose(fp); return EXIT_FAILURE; } fprintf(fp, "id: %d name: %s\r\n", id, name); printf("%sへ書き込みました\n", filename); fclose(fp); return EXIT_SUCCESS; } // ここまで int main(void) { int reg = 0; printf("新規登録: 1 追加登録: 2\n"); scanf("%d", ®); switch (reg) { case 1: new_reg(); break; case 2: add_reg(); break; default: printf("1か2で入力してください\n"); } printf("終了します\n"); return 0; } // 実行結果 新規登録: 1 追加登録: 2 2 ファイルを開きました 学籍番号: 2 氏名: Sato // student.txtの内容
特に難しいことなく、"fopen"のモードを"a"にして追加書き込みできるに変更するだけでした。
改行にするには、"fprintf"の\nの前に\rと追記するだけで実装できました。