728x90
반응형
구조체(Structure)
C언어에서 구조체는 서로 관련된 여러 데이터를 하나의 논리적인 단위로 묶어
표현할 수 있는 사용자 정의 데이터 타입입니다.
구조체는 다양한 데이터 타입의 멤버들로 이루어 지며,
각 멤버는 구조체 내에서 고유한 이름을 가집니다. 멤버에 접근하기 위해서는 구조체 변수의 이름 뒤에 점(.) 연산자를
사용하여 멤버 이름을 지정해야 합니다.
예를 들어 다음과 같이 구조체를 정의할 수 있습니다.
struct Person
{
char name[20];
int age;
float height;
};
위 구조체는 이름(name), 나이(age), 키(height)를 멤버로 갖는 구조체를 정의한 것입니다.
구조체를 사용하여 변수를 선언할 때는 다음과 같이 작성합니다.
struct Person person1;
또는 typedef를 사용하여 구조체 이름을 별칭으로 정의하여 다음과 같이 작성할 수도 있습니다.
typedef struct
{
char name[20];
int age;
float height;
} Person;
Person person1;
구조체는 데이터를 논리적으로 묶어 관리하기에 유용하며,
다양한 자료구조나 객체 지향 프로그래밍에서도 많이 활용됩니다.
구조체를 이용한 간단한 주소록 관리 프로그램
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
typedef struct
{
char name[20];
char phone[20];
char email[30];
} Contact;
int main()
{
Contact contacts[MAX_CONTACTS];
int num_contacts = 0;
int choice;
while (1)
{
printf("주소록 관리 프로그램\n");
printf("1. 연락처 추가\n");
printf("2. 연락처 검색\n");
printf("3. 연락처 목록 출력\n");
printf("4. 프로그램 종료\n");
printf("선택: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
if (num_contacts >= MAX_CONTACTS)
{
printf("더 이상 연락처를 추가할 수 없습니다.\n");
}
else
{
printf("이름: ");
scanf("%s", contacts[num_contacts].name);
printf("전화번호: ");
scanf("%s", contacts[num_contacts].phone);
printf("이메일: ");
scanf("%s", contacts[num_contacts].email);
num_contacts++;
}
break;
case 2:
if (num_contacts == 0)
{
printf("저장된 연락처가 없습니다.\n");
}
else
{
char search_name[20];
printf("검색할 이름: ");
scanf("%s", search_name);
int found = 0;
for (int i = 0; i < num_contacts; i++)
{
if (strcmp(search_name, contacts[i].name) == 0)
{
printf("이름: %s\n", contacts[i].name);
printf("전화번호: %s\n", contacts[i].phone);
printf("이메일: %s\n", contacts[i].email);
found = 1;
break;
}
}
if (!found)
{
printf("검색된 연락처가 없습니다.\n");
}
}
break;
case 3:
if (num_contacts == 0)
{
printf("저장된 연락처가 없습니다.\n");
}
else
{
for (int i = 0; i < num_contacts; i++)
{
printf("이름: %s\n", contacts[i].name);
printf("전화번호: %s\n", contacts[i].phone);
printf("이메일: %s\n", contacts[i].email);
printf("\n");
}
}
break;
case 4:
printf("프로그램을 종료합니다.\n");
exit(0);
default:
printf("잘못된 입력입니다.\n");
break;
}
}
return 0;
}
728x90
반응형
'Language > C & C++' 카테고리의 다른 글
A simple question about the preprocessor directive 'include' (0) | 2024.03.05 |
---|---|
GNU Compiler Collection (0) | 2024.01.02 |
증감 연산자의 응용 (0) | 2023.04.15 |
특수연산자 (괄호, 쉼표) (0) | 2023.04.15 |
Function pointer (0) | 2022.11.19 |