본문 바로가기

IT

[C] 구조체 Structure

반응형

#1. 구조체가 뭐야?

컴퓨터 프로그래밍에서 구조체("구조"의 줄임말)는 다양한 유형의 다양한 변수를 단일 단위로 그룹화할 수 있는 복합 데이터 유형이에요. 관련 정보를 보유할 수 있는 사용자 지정 데이터 구조를 만들 수 있어요.

구조체는 데이터 구조에 대한 청사진 또는 템플릿을 정의해요. 멤버 또는 필드로 알려진 개별 구성 요소의 이름과 데이터 유형을 지정해요. 구조체 내의 각 멤버는 정수, 실수, 문자 또는 기타 구조체와 같은 자체 데이터 유형을 가질 수 있어요.

구조체 일반적으로 C, C++ C# 같은 프로그래밍 언어에서 사용됩니다. 아래는 C 구조체 예제에요.

#2. 예제 코드 및 설명

#include <stdio.h>
#include <stdbool.h>

struct student // 구조체 student
{
    char id[3][100];
    char name[3][100];
    int age[3];
    bool gender[3];
};

int main()
{
    struct student student;
    int i = 0;
    int j = 2;
    int temp_gender[3];

    while (i < 3) // 학생 정보 입력
    {
        printf("\n학번, 나이, 이름, 성별(여자: 0, 남자: 1)을 입력하세요. (%d번 남음)\n", j);
        printf("예시) 100 21 김홍대 1\n");
        
        scanf("%s %d %s %d", student.id[i], &student.age[i], student.name[i], &temp_gender[i]);
        i = i + 1;
        j = j - 1;
    }

    i = 0;
    j = 0;
    while (i < 3) // BOOL 타입으로 전환
    {
        if (temp_gender[i] == 0)
        {
            student.gender[i] = false;
        }
        else if (temp_gender[i] == 1)
        {
            student.gender[i] = true;
        }

        i = i + 1;
    }
    
    i = 0;
    j = 0;

    while (i < 3) // 학생 정보 출력
    {
        if (student.gender[i] == true)
        {
            printf("학번 : %s, 나이 : %d, 이름 : %s 성별 : m\n", student.id[i], student.age[i], student.name[i]);
        }
        else if (student.gender[i] == false)
        {
            printf("학번 : %s, 나이 : %d, 이름 : %s 성별 : f\n", student.id[i], student.age[i], student.name[i]);
        }
    
        i = i + 1;
    }
}

전반적으로  코드는 ID, 이름, 연령  성별을 포함한 학생 정보를 저장하고 조작하는 구조체의 사용법을 보여주는 예시에요. 이 코드는 세 명의 학생에 대한 정보를 저장하기 위해 "student"라는 구조체의 사용법을 보여주는 C 프로그램이에요. 코드를 단계별로 살펴봐요.

  1. 필요한 헤더 파일 stdio.h 및 stdbool.h가 포함했어요.
  2. 'student' 구조체를 정의했고, 그 안에 있는 멤버들은 다음과 같아요.
    ○ id: 3명의 학생 ID 저장하기 위한 2D 문자 배열
    ○ name: 3명의 학생 이름을 저장하기 위한 2D 문자 배열 
    ○ age: 학생의 나이를 저장할 정수형 배열
    ○ gender: 세 학생의 성별을 나타내는 Bool 타입 배열 (여성의 경우 FALSE, 남성의 경우 TRUE)
  3. main() 함수는 프로그램의 진입점으로 정의했어요.
  4. 학생 정보를 저장하기 위한 student(struct student 유형), 루프 카운터를 위한 i 및 j, 성별 입력을 임시로 저장하기 위한 temp_gender를 포함하여 여러 변수를 선언했어요.
  5. 첫 번째 while 루프는 학생 정보를 입력하는 데 사용되어요. 3명의 학생의 정보를 입력받기 때문에, 3번 진행해요.
  6. 루프 카운터 변수는 그에 따라 증가 및 감소해요.
  7. 두 번째 while 루프는 임시 성별 값(temp_gender)을 Bool 타입 (student.gender)으로 변환하는 데 사용해요.
  8. 루프 카운터 변수가 증가해요.
  9. 세 번째 while 루프는 학생 정보를 출력하는 데 사용해요.
  10. 성별은 'if' 문으로 확인하고 해당 문자(남은 'm', 여는 'f')를 다른 학생 정보와 함께 출력해요.

 

반응형