문자열로 되어 있는 숫자를 그냥 보는 것은 어렵다. 숫자 단위가 커지다 보면 더욱더 읽기 난해하다. 그래서 세자리마다 콤마(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;
}
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 |