idと名前をstudent.txtに出力することができるプログラムを組みたかった
auです。
今回はidと氏名をstudent.txtに出力するプログラムを組みたかったんですが、何かがいけないためにSegmentation fault (core dumped)とエラーが起きてしまい、うまく動作することができませんでした。
#include <stdio.h> #include <stdlib.h> void new_reg(void) { int id = 0; char name[256][256]; char filename[] = "student.txt"; int count = 0; FILE *fp; if ((fopen(filename, "w")) == NULL) { fprintf(stderr, "ファイルを開くことができませんでした\n"); return EXIT_FAILURE; } /*printf("学籍番号: "); scanf("%d", &id);*/ printf("氏名: "); scanf("%s", name); count = fprintf(fp, name); if (count < 0) { fprintf(stderr, "ファイルの書き込みに失敗しました\n"); fclose(fp); return EXIT_FAILURE; } /*fprintf(stderr, "%d\n", id);*/ fprintf(stdout, "%sへ%d文字書き込みました\n", filename, count); 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 1 氏名: au Segmentation fault (core dumped)
どこが悪いのかわかる人がいらっしゃいましたらコメントをお願いします。
今は大学の所属している委員会の合宿中なので、あまり修正する時間がありませんが、後日また修正したいと思います。