#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;
}
▼ ragged arrary가 뭔가? https://swprog.tistory.com/entry/Ragged-Array