개인 공부/C언어 공부

C언어 코딩도장 59.11 심사문제: 구조체 포인터로 포인터 연산하기

240 • 사공이 2020. 9. 6. 06:56

문제 : 표준 입력으로 x, y, z 좌표 3개가 입력되어 Point3D 배열에 저장됩니다. 다음 소스 코드를 완성하여 구조체 배열에서 두 번째 요소의 x 멤버와 세 번째 요소의 z 멤버가 출력되게 만드세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct Point3D {
    float x;
    float y;
    float z;
};
 
int main()
{
    void* ptr = malloc(sizeof(struct Point3D) * 3);
    struct Point3D p[3];
    float result1, result2;
 
    scanf("%f %f %f %f %f %f %f %f %f",
        &p[0].x, &p[0].y, &p[0].z,
        &p[1].x, &p[1].y, &p[1].z,
        &p[2].x, &p[2].y, &p[2].z
    );
 
    memcpy(ptr, p, sizeof(struct Point3D) * 3);
    memset(p, 0sizeof(struct Point3D) * 3);
 
    result1 = ((struct Point3D*)ptr + 1)->x;
    result2 = ((struct Point3D*)ptr + 2)->z;
 
    printf("%.1f %.1f\n", result1, result2);
 
    free(ptr);
 
    return 0;
}
cs

 

이제 개강해서 C언어 공부는 못 할 것 같다. 함수랑 문자열도 다시 공부하면 좋을 것 같은데 나의 나태함 때문에 어쩔 수 없이 포인터, 구조체만 끝냈네...^-^;; 그래도 그 둘이라도 공부해놔서 다행이라고 해야 할지...

필요하면 찾아가면서 공부하지 뭐. 2학기도 화이팅이다 으아악~!