컴퓨터활용/유닉스

문자열 숫자에 , 콤마로 세자리씩 분리하기

멜번초이 2010. 8. 17. 20:59
문자열로 되어 있는 숫자를 그냥 보는 것은 어렵다. 숫자 단위가 커지다 보면 더욱더 읽기 난해하다. 그래서 세자리마다 콤마(comma)로 쉼표를 찍어 준다면 읽기 편하겠다.

static char  sx_cma_print_buf[50];
static char *  print_with_comma(char *str) // 컴마로분리
{  
    int ix = 0;
    int iy = 0;
    int pos = 0;
    lldiv_t  dv;
    char   x_tmp[50];

    bzero(sx_cma_print_buf, sizeof(sx_cma_print_buf));
    strcpy(x_tmp, str);

    for( ix=0; ix<strlen(x_tmp) && x_tmp[ix] != '.'; ix++) {
        ;
    }

    pos = ix;  // 점이 있는 위치

    for( ix=0; ix<strlen(x_tmp) && x_tmp[ix] != '.'; ix++) {
        sx_cma_print_buf[iy] = x_tmp[ix];
        iy++;
        // 3배수 위치마다  콤마를 친다
        dv = lldiv(pos-ix-1,3);
        if( dv.rem == 0 && x_tmp[ix+1] != '.' &&  x_tmp[ix+1] != 0x00) {
            sx_cma_print_buf[iy] = ',';
            iy++;
        }
    }
    // 점 이후에는 그냥 옮긴긴다.
    // strncpy( sx_cma_print_buf+iy, x_tmp+ix, strlen(x_tmp)-iy );
    for (; ix<strlen(x_tmp); ix++, iy++) {
        sx_cma_print_buf[iy] = x_tmp[ix];
    }

    return sx_cma_print_buf;
}

'컴퓨터활용 > 유닉스' 카테고리의 다른 글

Unexpected end of file  (0) 2010.11.12
쉘에서 로그 출력 방향 지정  (0) 2010.09.06
unix tee 명령어  (1) 2010.04.22
0 문자를 트림하는 TRIMZERO 매크로  (0) 2009.08.12
secure CRT 크랙하기  (0) 2009.07.20