前提・実現したいこと
txtファイルの数値を表示させるプログラムを作成しています.
エラーがなくなり実行したところ数値がバグって表示されてしまいます.
汚いプログラムかと思いますがご回答よろしくお願いいたします.
発生している問題・エラーメッセージ
./NSP [~/Desktop/NRP] zsh: segmentation fault ./NSP
該当のソースコード
c
1#include<stdio.h> 2#include<stdlib.h> 3 4#define MAX_STAFF 8 5 6typedef struct{ 7 char ID;//従業員ID 8 int MaxShifts;//作成する稼働表の日数.ここでは14日 9 int MaxTotalMinutes;//1日の最大労働時間(単位:分) 10 int MinTotalMinutes;//1日の最小労働時間(単位:分) 11 int MaxConsecutiveShifts;//最大の連勤回数 12 int MinConsecutiveShifts;//最小の連勤回数 13 int MinConsecutiveDaysOff;//最小の連続した休日 14 int MaxWeekends;//週末は一週間で一回しか来ない. 15}employee_time_info; 16 17int main(){ 18 int i,mt; 19 int m,n,o,p,q,r,s,t; //ファイルの受け取り 20 FILE *fp; 21 employee_time_info staff[MAX_STAFF];//構造体の宣言 22 23 if((fp=fopen("staff_info.txt","r"))==NULL){ 24 printf("ファイルが開けません\n"); 25 exit(1); 26 } 27 for(i=0;i<MAX_STAFF;i++){ 28 if(fscanf(fp," %s ,%d ,%d ,%d ,%d ,%d ,%d ,%d\n",staff[i].ID,&staff[i].MaxShifts,staff[i].MaxTotalMinutes,staff[i].MinTotalMinutes,&staff[i].MaxConsecutiveShifts,&staff[i].MinConsecutiveShifts,&staff[i].MinConsecutiveDaysOff,&staff[i].MaxWeekends)!=8)break; 29 } 30 fclose(fp); 31 32 /* for(i=0;i<MAX_STAFF;i++){ 33 printf(" 従業員:%s \n1日の最大労働時間: %d分\n 1日の最小労働時間: %d分\n 最大の連勤回数: %d回\n 最小の連勤回数 %d回\n",staff[i].ID,staff[i].MaxShifts,staff[i].MaxTotalMinutes,staff[i].MinConsecutiveShifts,staff[i].MinConsecutiveShifts); 34 }*/ 35 36 for(i=0;i<MAX_STAFF;i++){ 37 printf("従業員: %s\n",staff[i].ID); 38 printf("1日の最大労働時間: %d\n",staff[i].MaxShifts); 39 printf("1日の最小労働時間: %d分\n",staff[i].MinConsecutiveShifts); 40 printf("最大の連勤回数: %d回\n ", staff[i].MaxConsecutiveShifts); 41 printf("最小の連勤回数: %d回\n",staff[i].MinConsecutiveShifts); 42 } 43 44 return 0; 45} 46
補足情報(FW/ツールのバージョンなど)
Macのemacsを使用しています.コンパイラはgccです.