[C언어] : 구조체와 typedef 예제
typedef 예제를 풀어보자
1단계 > typedef로 정의한 자료형으로 변수 선언.
<코드>
#include <stdio.h>
typedef unsigned short int UK;
int main()
{
unsigned short int data = 5;
UK arr;
arr = data;
printf("temp = %d\n", arr);
}
<결과>
- 이 처럼 typedef와 struct는 중요한 부분을 차지한다.
문제2) 구조체를 사용해서 사람의 신체 정보를 입력 받고 출력해라
<코드>
#include <stdio.h>
typedef struct People
{
char name[10];
unsigned short int age;
float height;
float weight;
} Person_p;
int main()
{
Person_p data;
printf("상대방의 정보를 입력하시오. > \n");
printf(" 이름 : ");
scanf_s("%s", data.name, 10);
printf(" 나이 : ");
scanf_s("%hu", &data.age);
printf(" 키 : ");
scanf_s("%f", &data.height);
printf(" 몸무게 : ");
scanf_s("%f", &data.weight);
printf(" \n 정보는 이와 같다. \n");
printf("%s : %d세, %.1fcm\n, %.1fkg\n", data.name, data.age, data.height, data.weight);
}
- 참고 | https://blog.naver.com/tipsware/221200252889
scanf_s 함수 정리 참고
<결과>
문제3 > 친구 정보 관리 프로그램
- 작업메뉴 : main 함수에서 처리한다.
- 사용자가 프로그램에서 제공하는 기능을 선택할 수 있게 한다.
- 친구 추가하기 : AddF
- scanf_s를 이용해서 1명씩 최대 5명까지 입력 받는다. 5명 이상 받으면 입력을 받을 수 없다고 처리 후 오류로 처리
- 친구 목록보기 : showF
- 입력된 친구 목록을 보여준다.
<코드>
#include <stdio.h>
#define MAX_ARR 5
typedef char NAME_TYPE[15];
int AddF(NAME_TYPE* p_name, unsigned short int* p_age, float* p_height, float* p_weight, int count)
{
if (count < MAX_ARR)
{
printf("\n 새로운 친구 정보를 입력하세요 \n");
printf("1. 이름 :");
scanf_s("%s", *(p_name + count), 15); // &로 받지 않기 때문에.
printf("2. 나이 : ");
scanf_s("%hu", p_age + count);
printf("3. 키 :");
scanf_s("%f", p_height + count);
printf("4. 몸무게 : ");
scanf_s("%f", p_weight + count);
printf(" 입력을 완료했다. \n\n");
return 1;
}
else {
printf("최대 인원을 초과하여 입력 할 수 없다. \n");
printf(" 최대 %d명까지만 관리 가능하다.\n\n", MAX_ARR);
}
return 0;
}
void showF(NAME_TYPE* p_name, unsigned short int* p_age, float* p_height, float* p_weight, int count)
{
int i;
if (count > 0)
{
printf("\n 등록된 친구 목록 \n");
printf("==========================\n");
for (int i = 0; i < count; i++)
{
printf("%-14s, %3d, %6.2f, %6.2f\n", *(p_name + i), *(p_age + i), *(p_height + i), *(p_weight + i));
}
printf(" ==========================\n\n");
}else {
printf(" \n 등록된 친구가 없습니다. \n\n");
}
}
int main()
{
NAME_TYPE name[MAX_ARR];
unsigned short int age[MAX_ARR];
float height[MAX_ARR];
float weight[MAX_ARR];
int count = 0, num;
while (1) {
printf(" [메뉴] \n");
printf("==============================\n");
printf("1. 친구 추가 \n");
printf("2. 친구 목록 보기\n");
printf("3. 종료 \n");
printf("=============================\n");
printf(" 번호 선택 : ");
scanf_s("%d", &num);
if (num == 1) {
if (1 == AddF(name, age, height, weight, count)) count++;}
else if (num == 2) {
showF(name, age, height, weight, count);
}
else if (num == 3) {
break;
}
else {
printf("1~3번만 선택가능하다.\n\n");
}
}
}
<결과>
=> 구조체를 활용하여 구현.
#include <stdio.h>
#define MAX_ARR 5
typedef struct People
{
char name[14];
unsigned short int age;
float height;
float weight;
}Person;
int AddF(Person *p_friend, int count)
{
if (count < MAX_ARR)
{
p_friend = p_friend + count;
printf("\n 새로운 친구 정보를 입력하세요 \n");
printf("1. 이름 :");
scanf_s("%s", p_friend->name, 14); // &로 받지 않기 때문에.
printf("2. 나이 : ");
scanf_s("%hu", &p_friend->age);
printf("3. 키 :");
scanf_s("%f", &p_friend->height);
printf("4. 몸무게 : ");
scanf_s("%f", &p_friend->weight);
printf(" 입력을 완료했다. \n\n");
return 1;
}
else {
printf("최대 인원을 초과하여 입력 할 수 없다. \n");
printf(" 최대 %d명까지만 관리 가능하다.\n\n", MAX_ARR);
}
return 0;
}
void showF(Person *p_friend, int count)
{
int i;
if (count > 0)
{
printf("\n 등록된 친구 목록 \n");
printf("==========================\n");
for (int i = 0; i < count; i++)
{
printf("%-14s, %3d, %6.2f, %6.2f\n", p_friend->name, p_friend->age, p_friend->height, p_friend->weight);
p_friend++;
}
printf(" ==========================\n\n");
}else {
printf(" \n 등록된 친구가 없습니다. \n\n");
}
}
int main()
{
Person friends[MAX_ARR];
int count = 0, num;
while (1) {
printf(" [메뉴] \n");
printf("==============================\n");
printf("1. 친구 추가 \n");
printf("2. 친구 목록 보기\n");
printf("3. 종료 \n");
printf("=============================\n");
printf(" 번호 선택 : ");
scanf_s("%d", &num);
if (num == 1) {
if (1 == AddF(friends, count)) count++;
}else if (num == 2) {
showF(friends, count);
}
else if (num == 3) {
break;
}
else {
printf("1~3번만 선택가능하다.\n\n");
}
}
}
<결과>
Author And Source
이 문제에 관하여([C언어] : 구조체와 typedef 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qlwb7187/C언어-구조체와-typedef-예제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)