«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

atoi : Alphabet TO Integer

itoa : Integer TO Alphabet


두 함수의 사용에 대해 포스팅을 하고자 한다.

나 또한 C가 익숙하게 사용할 수준이 아니기 때문에 사소하거나 쉬운 것조차 자주 헷갈리거나 까먹어 구글링을 하고는 한다.

그런데 정말 정말 정말.. itoa 부분에 대해 사람들이 잘 모르거나 심지어 욕설까지 하는 경우까지 있다.

이유는 C를 가르칠 때, 이것이 표준인지 아닌지를 가르쳐주지 않기 때문에 발생한다.

적어도 국내에서 많은 학교나 학원, 코딩과외 등에서 Visual Studio로 교육을 하는데 강의를 들을 때도, 보조강사로 일해볼 때도 한번도 표준과 비표준을 가르쳐주는 강좌가 없었다. 


"숫자에서 문자열로 바꾸려면 itoa를 쓰시면 되어요."


이게 끝이라는 것이다.


결론부터 말하자면 itoa는 표준이 아니다. 비표준이다.

비표준 함수를 다른 환경에서 사용을 하고, 안된다고 욕설을 하는 경우를 자주 보게 된다.

나는 주변에 내 주도하에 프로그래밍을 가르쳐줄 때, 이런 부분 때문에 내가 몰라서 못 가르쳐준 것이 아니라면 이것이 표준인지 비표준인지를 확실히 하고 가르친다.

그 순간에 이해를 못하더라도, 한두번이라도 들어두면 다음에 그만큼 삽질과 잘못된 이해를 바로잡을 수 있다.


먼저, itoa는 Visual Studio에서 "임의로 stdlib.h에 입력한 함수다!"


최신 C표준은 내가 알지 못하기 때문에 최신 표준에서 추가가 되었다면 알려주시면 감사합니다.

C18에서는 추가가 되었다는 소식입니다.

하지만 실 개발환경에 전부 적용되려면 수 년은 지나야 할 것입니다.

거기에 제가 알기론 itoa 등은 Borland C(지금의 Embarcadero..)의 함수로 알고 있어서 쉽게 표준에 들어갈 수 없는 것으로 알고 있는데..


그러나, 대부분의 표준 c 환경에서는(c++과의 호환에도 문제가 없는) stdlib.h에 itoa는 없다.

생각을 해보자.

동일 버전의 표준 C 라면, 그것이 리눅스가 되었든 유닉스가 되었든 맥이든 윈도우든 다 사용이 가능해야 표준 아닐까?

윈도우에서는 되는데 리눅스에는 안된다고 욕설을 종종 보는데, 애초에 그것이 비표준이라는 생각을 해볼 수 있지 않을까?

이는 처음 배울 때 표준과 비표준의 개념을 가르쳐주지 않는 대부분 교육 실태의 문제라고 본다.

아직 모르니까, 처음이니까 라는 핑계로 건너뛰는 경우가 많은데, 그럴수록 확실히 짚고 넘어갈 것은 넘어가야 한다.

위 개념을 모르니까 "비표준일 것이다" 라는 생각에 도달할 수가 없는 것이다.


atoi는 표준이 맞으며 어떤 환경에서도 동작하지만

itoa는 비표준이므로 어떤 환경에서도 동작을 보장할 수 없다.


itoa를 사용하려면 본인이 별도로 함수를 만들어 써야하는데 다음과 같이 쉽게 전환이 가능하다.

리는 다른 타입의 역순 전환도 해당된다.

다만 임의로 편리하게 작성한 것이므로 충분한 버퍼 크기를 정해줘야 하며, 이에 따른 순간의 메모리 손실은 어쩔 수 없다.


아래에는 쉽게 변환하는 부분과, 메모리 손실을 최소화 하는 방법을 기술하였다.


간단한 방법(수정 2018.02.12)

char * ftoa(float f) {

char buf[256];

char *buf;

sprintf(buf, "%f", f);

return buf;

}


char * itoa(int i) {

char buf[11];

char *buf;

sprintf(buf, "%d", i);

return buf;

}


제보받은 C18에서의 ftoa(사실 검증이 필요하다.)

void ftoa (float fval, char *buf, int nField, int nPlaces) 

 { 

 //Formats a floating point number into it's ASCII representation.

 // Emulates %[w].[p]f in printf format statements for those using C18 which does support %f

 // Input:

 // fval the float to be converted to ASCII

 // buf a char array to contain the return string

 // nField total width of resulting field. Equivalent to the [width] field of printf

 // nPlaces width of fractional part. Equivalent to the [precision] field of printf

 // Output:

 // buf Null terminated formatted string

 //

 // e.g ftoa(12.3456789,&buf,10,5); will produce buf  containing '  12.34567'

 // 

  sprintf (buf,"%*d.%0*lu", nField-nPlaces-1, (int) fval, nPlaces, (long int) ((fval - (int) fval ) * pow(10, nPlaces)) ); 

 }


,
한국 ISP(인터넷 서비스 업체)의 사기에 대 실망입니다.
한국에서 해외 사이트 접속하면 속도가 느리지요?
그게 왜 그런지 아세요?
한국에서 돈 안내려고 해외로 접속하는 트래픽을 낮게 제한해서입니다.
원래 이걸 제한하면 안됩니다.
그런데, 회사측 및 정부에서 최대한 돈빨아먹으려고 제한을 한것이죠.

왜 해외 접속하면 돈이 나가는지 아십니까?
해외 접속을 하면 그 국가의 ISP의 회선을 사용해야지요?
그러면 그 사용료를 내야 하는 거구요.
반대로 해외서 우리나라 접속시 우리나라 회선 이용료를 내야하는 거랍니다.

그런데, 한국 -> 해외 트래픽을 낮게 제한해버린다면?
한국 -> 해외로 이용료는 적게 내게 되지만
해외 -> 한국 이용료는 많이 들어오게 되죠.
즉, 두 액수의 차이만큼 기업이 더 떼먹는 건데요.
그 액수가 무려 제한하기 이전보다 1850%의 이익을 취한다고 합니다.
제한을 하지 않으면 5%의 이익을 취하는데요.

이것을 승인해준건 당연히 정부겠지요?
그런데 어느 정부에서 해준걸까요?
김 전 대통령, 노 전 대통령때 승인을 해준 거랍니다.
전자정부에 들어가는 돈을 위 사항을 허가해줌으로써 일정 금액을 상납하라고 ISP에 요구한 것이지요.
그러면 폭리를 취하는 많큼 이용료가 떨어져야하는데, 우리가 내는 돈은 딸랑 3년 약정 기준 1개월에 2~3천원 떨어졌지요?
이익은 엄청 늘어났는데 말이지요?

실제로 제가 아는분이 미국에 사시는데 미국 텍사스에 있는 서버에 접속하는 시간보다
한국의 서버에 접속하는 시간이 더욱 빠르다고 합니다.
그런데 우리는 반대로 국내 서버가 제일 빠르죠?
트래픽 제한을 하지 않는다면 본래 국내보다 해외가 더 빠르답니다.
왜냐하면 국내 접속시 거치는 라우터(가정용으로는 공유기)가 해외 접속시보다 훨씬 많거든요.

해외에서는 우리나라를 이렇게 부른답니다.
국내만 빠른 엉터리 국가.

여기에 덧붙여 보자면 우리나라 사이트도 문제입니다.
우리가 Internet Explorer 말고 Firefox나 기타 웹 브라우져 프로그램으로는 한국에서 사용하기 매우 까다롭죠?
그 이유가 여기에 있습니다.

해외 사이트는 솔직히 어느 브라우저를 쓰나 깨짐이나 기타 문제가 없습니다.
왜 그런지 아시나요?
그것은 웹 표준을 지키기 때문이죠.
우리나라 웹 프로그래밍 실력은 매우 떨어집니다.
같은 한국인으로써 부끄럽지만, 우리나라의 IT강국이라는 말은 국내에서만 통하는거고. 통해도 IE 내에서만 통하죠.
해외 개발자들은 우리나라 개발자하고는 상종을 안한대요.
웹 표준 안지키고, 제멋대로 막 만들고 그러면서 들어간 돈이나 시간에 비해 제대로 된 프로그램도 안나오니 말이지요.
그래서 우리나라에서 뭐 하나 만든다 하면 '표준을 따르지 않는 친구들과는 상종 안해' 라고 한답니다.

우리나라 IT의 이면성 이제 아시겠나요?
솔직히 이런 글을 저만 올리지는 않을 겁니다.
하지만 대한민국의 인터넷 문화란 바른 소리 옳은 소리를 하면 오히려 뭍혀버리고 무시당하죠.
오로지 엔터테인먼트, 정부 비리글 관련은 잘 읽으면서 그에 관련한 이런글은 뉴스에 뜨지 않는 이상 누가 쳐다나 볼까요?
'그 시간에 연예 뉴스를 보겠다.' 할지도 모르겠군요..
,
1
프로필 이미지
It's the Only NEET Thing to do. written by 나즈나
분류 전체보기 (256)
포트폴리오 (2)
여러가지 (160)
Windows (26)
Linux (1)
Server (5)
컴퓨터 (48)
전자기기 (3)
자격증 (3)
모바일 (1)
공유기 (4)
초소형컴퓨터 (3)