구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결)
아이돌
질문 제목 : 구조체 동적할당을 이용해서 연습을 하는데 문법오류는 안뜨고 실행시 끝부분에서 에러가 뜹니다
실행시 오류가 뜨고 정수값이 제대로 표기가 안됩니다질문 내용 :
#include stdio.h
typedef struct information
{
char name[20];
int age[10];
char add[50];
}inf;int main()
{
int i,stnum;
inf *s;
printf(학생 수를 입력하시오:);
scanf(%d, &stnum);
s=(inf *)malloc(sizeof(inf)*stnum);
for(i=0;istnum;i++)
{
printf(%d번 학생\n,i+1);
printf(===============\n);
printf(이름 : );
scanf(%s, s[i].name);
fflush(stdin);
printf(\n나이 : );
scanf(%d, s[i].age);
fflush(stdin);
printf(\n주소 : );
scanf(%s, s[i].add);
fflush(stdin);
}
system(cls);
for(i=0;istnum;i++)
{
printf(입력하신 학생들의 정보 입니다\n);
printf(%d번 학생\n,i+1);
printf(=========================\n);
printf(%s\n, s[i].name);
printf(%d\n, s[i].age);
printf(%s\n, s[i].add);
printf(=========================\n);
}
for(i=0;istnum;i++)
{
free(s[i]);
}
return 0;
}제가 배운지 얼마 안되서 무엇이 잘못되었느지 모르겠습니다 ..
문제점 지적해주시면 감사하겠습니다...
-
제나
일단은 끝부분 오류는 동적할당 해제를 제가 생각할땐 구조체 S[0]~S[stNum(입력한 학생수)] 까지 하나씩 for문으로 해제해야줘된다고 생각햇는데 그냥 free S로 바꾸니 오류 없이 출력은 되는데요 그런데 저 나이부분은 계속 이상한 숫자로 나와서 찾아보니 구조체에 age 부분은 배열로 안해도 되서 배열빼고 age로 바꿧는데 이번에는 나이 입력부분에서 오류가 나서 또 찾아보니 배열의 경우만 &를 안써도 되는걸 이제 생각햇네요
-
상큼한캔디
그리고 malloc.h도추가하시고요
-
박애교
동적할당한부분에서 sfnum포인터지우세요