C언어 자료구조 구조체 문제입니다.
문제)
함수안 메모리 할당의 반환을 이용 각 3명의 학생의 이름과 학번 그리고 취미를 저장, 출력하는 프로그램을 작성하시오.
구조체를 사용하여 메모리 할당을 반환하시오.
typedef struct student_tag{
int ID;
char name[32];
char hobby[128];
}student;
위에껄 기반으로 짜는건데 감이 안잡히고 영 모르겠어서..
좀 알려주세요 ㅠㅠ
안녕하세요?
1. 아래와 같이 구현해 보았습니다.
2. 핵심은 동적메모리 할당, 포인터를 이용한 구조체 접근등 입니다.
#include <stdio.h>
#include <stdlib.h>
// 구조체 정의
typedef struct student_tag{
int ID;
char name[32];
char hobby[128];
} student;
// 함수헤더
student* SaveStudents(int count);
void PrintStudents(student* ptrStudent, int count);
int main()
{
int number = 3;
// 요청만큼의 학생정보가 담긴 구조체 배열 반환
student* ptrStudent = SaveStudents(number);
// 입력된 학생카드 출력
PrintStudents(ptrStudent, number);
// 리소스 해제
free(ptrStudent);
return 0;
}
// 학생카드를 저장합니다.
student* SaveStudents(int count)
{
// 구조체 배열을 동적으로 메모리 할당
student* students = (student*)malloc(sizeof(student) * count);
printf("--------------------------------\n");
printf("%d명의 학생 기록를 입력하세요. \n", count);
printf("--------------------------------\n");
// 포인터 연산으로 구조체 접근 (students + loop)->
for(int loop = 0; loop < count; loop++)
{
// ID 자동부여
(students + loop)->ID = loop + 1;
printf("ID: %d \n", (students + loop)->ID);
// 이름
printf("이름: ");
scanf("%s", (students + loop)->name);
// 취미
printf("취미: ");
scanf("%s", (students + loop)->hobby);
printf("\n");
}
// 할당받은 구조체 배열의 포인터 반환
return students;
}
// 학생카드를 출력합니다.
void PrintStudents(student* ptrStudent, int count)
{
printf("\n\n\n");
printf("--------------------------------\n");
printf("학생카드 \n");
printf("--------------------------------\n");
for(int loop = 0; loop < count; loop++)
{
printf("id : %d \n", (ptrStudent + loop)->ID);
printf("name : %s \n", (ptrStudent + loop)->name);
printf("hobby: %s \n", (ptrStudent + loop)->hobby);
printf("\n\n");
}
printf("\n\n\n");
}
도움이 되시길 바랍니다.
감사합니다.
written by
legend
C과외/C#과외/VB과외 프로그래밍 과외.서울인천경기-방문강의.기타전국-화상강의.제대로 체계적으로 배우고싶은분들.15년경력 프리랜서.삼성/포스코/한진 등.
서울,인천,경기,분당,일산,과천,산본,부천,부평,평촌,안산,안양,광명,용인,시흥,성남,수원,평택,오산,화성,동탄,천안,아산,
c#프로그래밍1:1과외, 15년 이상 프로젝트 경력의 프리랜서 직접 강의,
c#프로그래밍 과외, c#프로그래밍교육, IT·컴퓨터·컴퓨터과외비·프로그래밍과외, c# 강좌, c# 프로그래밍,
데이터베이스, 데이터베이스 프로그래밍, db, DB, 과외비,컴퓨터1:1,컴퓨터개인지도,컴퓨터실무과외,컴퓨터과외,컴퓨터1:1과외,
서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄
광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도