✅ 목표 (Goal)

image.png

#include <stdio.h>
#include <string.h>

#define MAX_ROW 5
#define MAX_LEN 12

char menu[MAX_ROW][MAX_LEN + 1]; // null 문자때문에 여분으로 하나 더 붙여줌

void print_ragged_array() {
    char* pcha[MAX_ROW];
    //*(pcha + 0) = "[1] New";
    //strcpy((*pcha)[0], "[1] New");
    pcha[0] = "[1] New";
    pcha[1] = "[2] Open";
    pcha[2] = "[3] Save";
    pcha[3] = "[4] Save as";
    //strcpy(pcha[3], "[4] Save as"); // qqq 어라? 이게 왜 안되지?위와 동일, 복사해 오기 때문에 완벽히 같지는 않다.
    pcha[4] = "[5] Exit";
    //strcpy(pcha[4], "[5] Exit"); // 위와 동일

    for (int i = 0; i < MAX_ROW; i++) {
        printf("%s\\n", pcha[i]);
    }
    printf("------------------------------\\n");
    printf("Size of array is % d bytes\\n\\n", sizeof(pcha)); // 배열로 받으면 65였는데, 포인터 변수이므로 얼마일까? 4x5=20

    int str_len = 0;
    int total_len = 0;
    for (int i = 0; i < MAX_ROW; i++) {
        str_len = strlen(pcha[i]);
        total_len += str_len;
        printf("\\"%s\\" length is %d bytes.\\n", pcha[i], str_len);
    }
    printf("------------------------------\\n");
    printf("Total string length is %d bytes.\\n\\n", total_len);

}

int main() {
    //print_rectangular_array();
    print_ragged_array();
    return 0;
}

✅ 참조 (Ref.)

▼ ragged arrary가 뭔가? https://swprog.tistory.com/entry/Ragged-Array