質問: ファイルを読み込むプログラム 氏名、英語、数学が保存されているファイル(記入されている人数は不明とし100人まで読み込めるとする)を関数内で読み込んで個人の点数の平均値と、皆の数学の平均値、英語の平均値を関数内で定義して出力するプログラムを作りましたが、コンパイルはできても実行するとエラーが出ます。どこがおかしいか分かる人教えてください。 #include #include #include #define number 100 int n=0; //構造体を宣言する struct student {char name[6]; double math; double eng; }; struct student *sset_student(char *buffer) { struct student *pss[number]; int ret; ret=sscanf(&buffer[0],"%s %lf %lf",&pss[0]->name,&pss[0]->math,&pss[0]->eng); if(ret!=3) { puts("代入された入力項目の個数が3でありません"); return null; } return pss[0]; } struct student *fset_all_student(void) { int i; struct student *pss[number]; file *fpin; char buffer[20]; fpin=fopen("input.txt","r"); if(fpin==null) { fprintf(stderr, "入力するファイルが開きません"); return null; } while(fgets(&buffer[0],sizeof(buffer),fpin) !=null ) { pss[i]=sset_student(&buffer[0]); i++; } n=i; fclose(fpin); return pss[0]; } void get_student_average(struct student *pss) { double heikin; heikin=(pss->math+pss->eng)/2.0; printf("%sの平均点は%dです\n",pss->name,heikin); } void get_average(struct student *pss) { int i; double msum=0; double esum=0; for(i=0;i<3;i++) { msum+=pss[i].math; esum+=pss[i].eng; } printf("数学の平均点は%dです\n",msum/n); printf("英語の平均点は%dです\n",esum/n); } int main(void) { int i; struct student *a[number]; for(i=0;i
回答: > ループ条件がnumberだと実行すると強制終了になってしまいます・・ 入力ファイル件数が100件未満の場合を考慮した コードを書かれていますか? > struct student *fset_all_student(void)の関数の > n=i(この場合は3) この場合は3、の意味がわかりません。 入力データの件数が3件なのですか? 名前、数学、英語の3項目の話とごっちゃになっていませんか? 入力ファイルの行数は何行ですか?