C언어 구조체를 사용해서 입력, 출력하기

2018. 10. 14. 13:45개발노트

구조체에 대해서 먼저 알아봅시다.


C/C++ 프로그래밍 언어에서 구조화 된 데이터를 처리할 때 struct를 사용하는데 이를 구조체라고 한다.

구조화되었다는 말은 의미가 연결되어 한 덩어리로 처리하는 방식을 말한다.

관련된 컴퓨터 용어로 보면 record 그리고 Object와 비슷한 개념이다.

그리고 자료처리와 연관하여 데이터 구조와 연관이 되어 있다. 

https://ko.wikipedia.org/wiki/Struct


구조체는 각각의 변수를 저장해놓는 상자입니다.

학생의 이름, 국어, 영어, 수학점수를 입력받고

총점, 평균을 구해서 평균을 기준으로 학점을 구하는 소스를 짜봅시다.


일단 구조체를 만들어줍시다.

구조체는 


typedef struct{


}


이런 형식으로 만들고 구조체 안에는 변수들이 들어가게 됩니다.

변수를 넣어주고 구조체의 이름은 Student 로 해주겠습니다.

필요한 변수는 이름, 수학점수, 영어점수, 국어점수, 총점, 평균, 학점 이렇게 총 7개의 변수입니다.


1
2
3
4
5
6
7
8
typedef struct
{
    char name[20];
    int kor, eng, mat;
    int tot;
    double avg;
    char grade;
}Student;
cs


구조체를 만들어줬으니 

main함수에서 끌어다 쓰기만 하면 됩니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main() {
 
 
    Student s1;
    printf("학생의 이름과 국어, 영어, 수학점수를 입력하세요. \n");
    scanf("%s %d %d %d", s1.name, &s1.kor, &s1.eng, &s1.mat);
    s1.tot = s1.kor + s1.eng + s1.mat;
    s1.avg = (double)s1.tot / 3;
    if (s1.avg > 90)
        s1.grade = 'A';
    else if (s1.avg>80)
        s1.grade = 'B';
    else if (s1.avg>70)
        s1.grade = 'C';
    else if (s1.avg>60)
        s1.grade = 'D';
    else
        s1.grade = 'F';
    printf("이름\t국어\t영어\t수학\t총점\t평균\t학점\n");
    printf("%s\t%d\t%d\t%d\t%d\t%.1f\t%c \n", s1.name, s1.kor, s1.eng, s1.mat, s1.tot, s1.avg, s1.grade);
}
cs


Student s1 으로 구조체 Student를 s1이라는 이름으로 불러왔습니다.

이제 구조체를 사용하겠다고 할 때 s1을 사용하면 됩니다.

 s1.변수명 을 사용하면 구조체 안에 있는 해당 변수를 가리킬 수 있습니다.

나머지 입력, 출력 방법은 위에서 보이듯이 일반 변수를 사용할 때와 동일합니다.