int를 char로 바꾸기..
글쓴이: 익명 사용자 / 작성시간: 일, 2002/03/03 - 11:33오후
예를 들면 이런겁니다..
int a = 10;
char b[10];
b에다가 a의 10를 넣고 싶은 거죠..
책을 찾아보니까 itoa()라는 함수가 있더라구요..
그래서 사용해 보니까.. 그런 함수가 리눅스의 stdlib.h파일에는
없더라구요..
find / -name "*.h"| grep itoa라고 해서
리눅스에 있는 모든 헤더파일를 뒤져 받지만... 소용 없었습니다..
어떻게 하면 int를 char로 바꾸죠..
도와주세요..
Forums:
Re: int를 char로 바꾸기..
int a = 10;
char b[10];
b에다가 a의 10를 넣고 싶은 거죠.. 배열 b의 11개의 원소중 하나에 10이라는 숫자를 문자형태로 입력하고 싶다는 건가요? 아니면 정수 10에 상응하는 문자를 넣고 싶은 건가요?
형변환해주는 걸 말씀하시나요?
예를 들어 b[0]=(char) a;
만약 후자라면 itoa를 직접 구현해도 되겠군요.
char itoa(int integer)
{
return ((char) interger);
}
아스키 문자를 정수로 바꾸는건 의미가 있지만
정수를 아스키로 바꾸는게 함수가 의미가 있을까요?
Re^2: int를 char로 바꾸기..
숫자 10를 문자 10으로 변수에 집어 넣고 싶습니다..
어디에 필요하야고 하면
sql의 query문장을 만들고 싶습니다...
Re^3: int를 char로 바꾸기..
10을 문자 '10'으로 바꾸시려면
함수를 만드셔야 할것 같습니다.
당연한 말인가요 ?^__^
우선 10이든 어떤 숫자든
계속 /10을 하여 그 몫을 가지고
char a = 몫 + '0'; 이렇게 하시면 되겠네요 ^__^
Re: int를 char로 바꾸기..
VC++ 에 있는 소스입니당.
static void __cdecl xtoa (
unsigned long val,
char *buf,
unsigned radix,
int is_neg
)
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp; /* temp char */
unsigned digval; /* value of digit */
p = buf;
if (is_neg) {
/* negative, so output '-' and negate */
*p++ = '-';
val = (unsigned long)(-(long)val);
}
firstdig = p; /* save pointer to first digit */
do {
digval = (unsigned) (val % radix);
val /= radix; /* get next digit */
/* convert to ascii and store */
if (digval > 9)
*p++ = (char) (digval - 10 + 'a'); /* a letter */
else
*p++ = (char) (digval + '0'); /* a digit */
} while (val > 0);
/* We now have the digit of the number in the buffer, but
in reverse
order. Thus we reverse them now. */
*p-- = '\0'; /* terminate string; p points to
last digit */
do {
temp = *p;
*p = *firstdig;
*firstdig = temp; /* swap *p and *firstdig */
--p;
++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */
}
/* Actual functions just call conversion helper with neg flag set
correctly,
and return pointer to buffer. */
char * __cdecl _itoa (
int val,
char *buf,
int radix
)
{
if (radix == 10 && val < 0)
xtoa((unsigned long)val, buf, radix, 1);
else
xtoa((unsigned long)(unsigned int)val, buf, radix, 0);
return buf;
}
Re^3: int를 char로 바꾸기..
그냥 sprintf 쓰시죠..
저도 예전에 itoa 함수를 리눅스에 찾은적이 있지요...
리눅스에서 지원이 되지않는 함수라...사용할수 없더군요..
그래서 다음과 같이 사용하고 있습니다.
sprintf(b, "%d", a);
질문에 맞는 답이 될런지 모르겠네요..^^;
simple_itoa함수의 소스입니다. 참고하십시요.
char *simple_itoa(int i)
{
/* 21 digits plus null terminator, good for 64-bit or smaller
ints */
/* for bigger ints, use a bigger buffer! */
static char local[22];
char *p = &local[21];
*p-- = '\0';
do {
*p-- = '0' + i % 10;
i /= 10;
} while (i > 0);
return p + 1;
}
댓글 달기