#include <stdio.h>
#include <stdlib.h>
void show_square(int** square, int size) { //틀 출력
int i;
static int show = 0;
for (i = 0; i < size; i++) {
for (int j = 0; j < (4 * size) + 1; j++) printf("-");
printf("\n");
for (int k = 0; k < size; k++) {
if (show == 0) printf("|%3d", (i * size) + k + 1); //각 자리에 대한 번호 명시
else if (**square == NULL) printf("| ");
else printf("|%3d", square[i][k]);
}
printf("|\n");
}
for (i = 0; i < (4 * size) + 1; i++) printf("-");
show++;
}
int malloc_arr(int*** arr, int size) { //메모리 동적 할당
*arr = (int**)malloc(sizeof(int*) * size);
for (int i = 0; i < size; i++) (*arr)[i] = (int*)malloc(sizeof(int) * size);
if (*arr == 0) return 1;
else return 0;
}
void free_arr(int*** arr, int size) { //동적 할당된 메모리 해제
for (int i = 0; i < size; i++) free((*arr)[i]);
free(*arr);
}
아직 만드는 중이라 아직 쓰지 않은 부분도 있지만 그건 무시해주시면 감사하겠습니다.
요점은 이중 포인터의 동적 할당을 하는 좀 더 효율적이고 안전한 방법이 있는지,
그리고 show_square 함수에 for 안의 else 구문입니다.
한 번 자신을 호출하면 그 이후 호출은 다른 출력을 보이는 형태입니다.
저 구문에 따르면 포인터의 참조 값은 NULL 값이라 else if를 타고 출력할 때 공백으로 출력되어야 하는데 조건문을 잘못 쓴건지 어떻게 해야할지 모르겠습니다.