C언어 2차원배열 동적할당

·2022년 3월 28일
0

C/C++

목록 보기
3/4
char *str = malloc(sizeof(char) * 1000);
    memset(str, '0', sizeof(char) * 1000);
    scanf("%s", str);
    int idx = 0;
    int cnt = 0;


/* 문자열 길이 카운트 */
    while (idx <= 1000)
    {
        if (str[idx] != '0')
        {
            cnt++;
        }
        else
        {
            break;
        }
        idx++;
    }
    cnt--;
    /* 동적할당 */
    char **tails = (char**)malloc(sizeof(char*) * cnt); /* 높이동적할당 */
    idx = 0;
    while (idx < cnt) /* 너비동적할당 */
    {
        tails[idx] = (char*)malloc(sizeof(char) * cnt);
        idx++;
    }
    /* 값넣어주기 */
    idx = 0;
    while(idx < cnt)
    {
        int idx2 = idx;
        while(idx2 < cnt)
        {
            tails[idx][idx2] = str[idx2];
            idx2++;
        }
        idx++;
    }
    /* 배열 출력 */
    idx = 0;
    while(idx < cnt)
    {
        int idx2 = idx;
        while(idx2 < cnt)
        {
            //printf("%c", tails[idx][idx2]);
            write(1, &tails[idx][idx2], 1);
            idx2++;
        }
        idx++;
        write(1, "\n", 1);
    }
    /* 동적 할당 해제 */
    idx = 0;
    while(idx < cnt)
    {
        free(tails[idx]);
        idx++;
    }
    free(tails);
profile
https://k-ang.tistory.com/ 이전했어요

0개의 댓글