free함수 디버그 문제 답변 부탁드립니다..
다인
질문 제목 : free함수 디버그 문제밑에 코딩 보시면 빨강칠 한부분을 주석처리하면 디버그가 안뜨는걸로 봐서 프리함수에 문제가 있는듯 해요..질문 내용 :
#include stdio.h
#include stdlib.h
#include malloc.h
typedef struct
{
float kor; //국어
float eng; //영어
float mat; //수학
float sci; //과학
float soc; //사회
float sum; //합계
float ave; //평균
} subject;
typedef struct
{
char number[20]; //학번
char name[20]; //이름
subject score;
} student;
void menu(void)
{
printf(1. 학생 정보\n);
printf(2. 성적 입력\n);
printf(3. 성적 출력\n);
printf(4. 종료\n);
printf(--------);
}
void inputstudent(int i, student * sptr)
{
printf(%d번째 학생학번 : ,i+1);
scanf(%s,sptr-number);
printf(%d번째 학생이름 : ,i+1);
scanf(%s,sptr-name);
}
void inputscore(student * sptr)
{
printf(%s %s 국어점수 : ,sptr-number, sptr-name);
scanf(%f,&sptr-score.kor);
printf(%s %s 영어점수 : ,sptr-number, sptr-name);
scanf(%f,&sptr-score.eng);
printf(%s %s 수학점수 : ,sptr-number, sptr-name);
scanf(%f,&sptr-score.mat);
printf(%s %s 과학점수 : ,sptr-number, sptr-name);
scanf(%f,&sptr-score.sci);
printf(%s %s 사회점수 : ,sptr-number, sptr-name);
scanf(%f,&sptr-score.soc);
sptr-score.sum=sptr-score.kor+sptr-score.eng+sptr-score.mat+sptr-score.sci+sptr-score.soc;
sptr-score.ave=sptr-score.sum/5.0;
}
void outputscore(student * sptr)
{
printf(\t%s %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n, sptr-number, sptr-name, sptr-score.kor,
sptr-score.eng, sptr-score.mat, sptr-score.sci, sptr-score.soc, sptr-score.sum, sptr-score.ave);
}
int main(void)
{
int n, i, choice;
printf(\n====================성적관리프로그램====================\n\n\n);
printf(몇명의 성적을 관리하시겠습니까? : );
scanf(%d, &n);
student * stu = (student *)malloc(sizeof(char)*n);
for(choice=0; choice!=4; )
{
menu();
scanf(%d,&choice);
switch(choice)
{
case 1:
for(i=0; in; i++)
inputstudent(i, &stu[i]);
break;
case 2:
for(i=0; in; i++)
inputscore(&stu[i]);
break;
case 3:
printf(\t 학번 이름 국어 영어 수학 과학 사회 총점 평균\n);
for(i=0; in; i++)
outputscore(&stu[i]);
break;
case 4:
break;
default:
printf(잘못 입력하셨습니다.\n\n);
}
}
free(stu);
}
위에 그림이 뜨는 디버그 입니다..