본문 바로가기
개념/혼자 공부하는 C언어

chapter 17) 다른 구조체를 멤버로 갖는 구조체 사용

by kiseno 2024. 9. 29.
728x90
반응형
SMALL
#include <stdio.h>

struct profile{
    int age;
    double height;
};

struct student{
    struct profile pf;
    int id;
    double grade;
};

int main(void){
    struct student yuni;

    yuni.pf.age = 17;
    yuni.pf.height = 164.5;
    yuni.id = 315;
    yuni.grade = 4.3;

    printf("age : %d\n", yuni.pf.age);
    printf("height : %d\n", yuni.pf.height);
    printf("class ; %d\n", yuni.id);
    printf("grade : %.1lf\n", yuni.grade);

    return 0;
}

### 코드 설명

- `struct profile`은 나이와 키를 멤버로 가지는 구조체입니다.
- `struct student`는 `struct profile` 타입의 `pf` 멤버를 포함하여, 추가적으로 학번과 성적을 멤버로 가지는 구조체입니다. 이렇게 하여 `student` 구조체는 `profile` 정보를 내장하게 됩니다.

### 학생 정보 초기화 및 출력

- `struct student yuni;`를 통해 `student` 구조체 타입의 변수 `yuni`를 선언합니다.
- `yuni.pf.age = 17;`, `yuni.pf.height = 164.5;`, `yuni.id = 315;`, `yuni.grade = 4.3;`을 사용하여 `yuni`의 나이, 키, 학번, 성적을 초기화합니다.
- `printf` 함수를 사용하여 `yuni`의 나이, 키, 학번, 성적을 출력합니다. 여기서 키를 출력할 때 사용된 형식 지정자 `%d`는 잘못되었습니다. 키는 `double` 타입이므로, 이를 정확하게 출력하기 위해서는 `%f` 또는 `%lf` 형식 지정자를 사용해야 합니다.

### 코드 수정

키를 출력하는 부분에서 형식 지정자를 `%d`에서 `%f`로 수정해야 합니다. 이렇게 하면 `double` 타입의 키 값이 정확히 출력됩니다.

```c
printf("height : %.1lf\n", yuni.pf.height);
```

수정된 코드는 다음과 같은 출력을 생성합니다:

```
age : 17
height : 164.5
class : 315
grade : 4.3
```

728x90
반응형
LIST