가끔가다가 integer, long, float 타입을 char 형식으로 바꿔야할
일이 생겼습니다.
예를 들면 itoa 함수를 찾아보니 따로 존재하지 않았습니다.
물론 구글에 검색하면 비슷한 기능을 수행하는 함수의 예를 확인하실 수 있습니다.
본 페이지의 하단에 대략적인 itoa 함수를 나타냈습니다.
하지만 http://www.cfaq.com 웹페이지에서 제안하는 방식은.
snprintf(sprintf) 함수를 이용하는 것 입니다.
예를 들면 아래처럼 사용할 수 있다.
char test_char[16] = {0,};
int test_int = 10000;
snprintf( test_char, sizeof(test_char), "%s", test_int);
#define INT_DIGITS 19 /* enough for 64 bit integer */
char *itoa(i)
int i;
{
/* Room for INT_DIGITS digits, - and '\0' */
static char buf[INT_DIGITS + 2];
char *p = buf + INT_DIGITS + 1; /* points to terminating '\0' */
if (i >= 0) {
do {
*--p = '0' + (i % 10);
i /= 10;
} while (i != 0);
return p;
}
else { /* i < 0 */
do {
*--p = '0' - (i % 10);
i /= 10;
} while (i != 0);
*--p = '-';
}
return p;
}
--------
반응형
'엔지니어' 카테고리의 다른 글
| 바이너리 파일전송 C언어 예제 -클라이언트- (467) | 2012.10.18 |
|---|---|
| 바이너리 파일전송 C언어 예제 -서버- (159) | 2012.10.18 |
| strspn 함수 예제 (3488) | 2012.09.20 |
| 파일내용 일괄변경하기[리눅스] (465) | 2012.09.03 |
| [EDW519] 월드클래스(?) 프로그래머의 업무 가이드라인 (456) | 2012.08.31 |