C에서 문자는 정수값으로 처리하는 개념을 공부하시면 아실겁니다.
(써놓고 보니 표현이 이상한데 딱히 달리 쓸 말이 없네요..)
int value;
char code;
value = 7;
code = '0' + value;
printf("%d %c", value, code );
문자가 아니고 문자열이라면 C에서 atoi() (문자열->정수) 함수는 지원해도
itoa() (정수 -> 문자열) 함수는 지원하지 않으므로 직접 작성해야 합니다.
정석적으로 하면 (int 형이라고 가정하겠습니다)
int 값이 몇자리인지 알아낸다.
자릿수+1만큼의 문자열 공간을 할당한다. (malloc등)
맨 뒷칸에 문자열의 끝('\0')을 기록한다.
자릿수만큼 다음을 반복한다 (카운터를 i라고 하면..)
{
int 값을 10으로 나눈 나머지를 (맨 뒷칸-i) 칸에 기록한다.
int 값을 10으로 나눈다.
}
이런식으로 짜는게 알고리즘 공부가 되겠지만..
그냥 쉽게 하시려면 다음과 같이 합니다..
#define MAX_SIZE 20
// 최대 자릿수를 미리 지정해버립니다
int value;
char code[MAX_SIZE] = {'0'};
value = 12345;
sprintf( (unsigned char)code, "%d", value );
sprintf() 함수의 사용법은 직접 찾아보시기 바랍니다.
(저두 안찾아보고 다른분이 갈쳐주신대로 썼습니다만 :oops: )
혹시 c숙제라면 맨아래쪽 방법은.. 점수가 별로 안나올듯하네요 :shock:
이유는 미리 몇자리인지 알아야 되고 실제 자리수보다 크게 잡으면 메모리 낭비가 생기고 하는
문제점들을 그냥 내버려 두기 때문이죠...
아.. 물론.. malloc 쓰는 비용이나 쓰고 해제안하고 하는 문제 발생 가능성등등도 무시할 수 있지는 않습니다만.. ^^;
...
이미 수차례 언급되었습니다.
검색해보시면 될듯.
itoa 혹은 sprintf.. 참조
C를 다시 한번 공부하세요.
웬만한 C 프로그래밍 책에는 다 나왔거든요.
"The C Programming Language"에는 문자->실수형 바꾸기를 직접 구현하는것도 나왔습니다.
저도 C는 잘못하지만, UNIX 프로그래밍할때 아는거랑 모르는건 차이가 크더군요.
직접 구현은 못하시더라도... itoa나 sprintf같은 라이브러리정도는 알아두셔야 합니다.
문자인가요? 문자열인가요?
문자라면 간단합니다.
1 -> '1' 이렇게 하고 싶으시면
'0' + 1 하시면 됩니다.
C에서 문자는 정수값으로 처리하는 개념을 공부하시면 아실겁니다.
(써놓고 보니 표현이 이상한데 딱히 달리 쓸 말이 없네요..)
문자가 아니고 문자열이라면 C에서 atoi() (문자열->정수) 함수는 지원해도
itoa() (정수 -> 문자열) 함수는 지원하지 않으므로 직접 작성해야 합니다.
정석적으로 하면 (int 형이라고 가정하겠습니다)
이런식으로 짜는게 알고리즘 공부가 되겠지만..
그냥 쉽게 하시려면 다음과 같이 합니다..
sprintf() 함수의 사용법은 직접 찾아보시기 바랍니다.
(저두 안찾아보고 다른분이 갈쳐주신대로 썼습니다만 :oops: )
혹시 c숙제라면 맨아래쪽 방법은.. 점수가 별로 안나올듯하네요 :shock:
이유는 미리 몇자리인지 알아야 되고 실제 자리수보다 크게 잡으면 메모리 낭비가 생기고 하는
문제점들을 그냥 내버려 두기 때문이죠...
아.. 물론.. malloc 쓰는 비용이나 쓰고 해제안하고 하는 문제 발생 가능성등등도 무시할 수 있지는 않습니다만.. ^^;
..........No Sig.........|
-------------------+
댓글 달기