//int my_num = 0;
//_samp_atoi(\"12345\", &my_num);
#include <stdio.h>
int _samp_atoi(char *str, unsigned int *res)
{
int i, j; //temp
unsigned int tmp = 0;
unsigned int strsize = strlen(str);
if(0 == strsize) return -1;
*res = 0; //initialize
for(i = strsize; i > 0; --i)
{
tmp = (unsigned int)(str[strsize - i]) - (unsigned int)(\'0\');
for(j = 1; j < i; j++)
{
tmp *= 10;
}
printf(\"%d\\r\\n\", tmp);
*res += tmp;
printf(\"%d\\r\\n\", *res);
}
return 0;
}
int main(void)
{
int num = 0;
_samp_atoi(\"12345\", &num);
printf(\"output result is %d\\r\\n\", num);
return 0;
}
http://codepad.org/R9e6E06R
게다가, 손 코딩도 아니고, 교정도 수십번.. 엉엉..
이너루프 이쁘게 바꿀수 있는 방법 없나요? 비트가지고 이리저리 꼬면 이뻐질거 같긴 한데.. 제 능력 밖;;T^T
중간의 printf 문은 눈으로 주석처리 하시고 스킵해 주세여;;
......뭔가 무지막지한 코드다 ㄱ-
뉴비라 그러니 이해좀..T^T
네이버 지식인에 물어보는게 더 빠르지 않나요?ㄲㄲ
그..그건 그래..T^T (완전 좌절해 버렸다..T^T)
111승네군//ㅇㅇ 나 같음 네이버 지식인에 물어봐요 소스 수정해서 답 금방 달리지연 낄낄
그냥.. 내가 얼마나 멍청한지 알고 싶었어.. 근데.. 알고 있었음에도 불구하고 기분은 나쁘다..T^T (하위 30% 라니.. 역시 난 플밍이랑은 안드로메다의 거리감을..;)
http://codepad.org/HU22FZer
atoi는 제대로 구현할려면 생각외로 어려움. 너무 자책하지 마삼.
아-0- 천재!
http://codepad.org/qTFtpE0F
일단 이정도..
반대로 itoa는 sprintf 쓰면 쉽게 구현가능.
아, 썅!디! 아, 그렇구나.. 그냥 result에다가 10씩 곱해가도 되는거구나.. 나 진짜 바보 인정;
이런 이유로 atoi는 시험문제로는 부적합하다는 결론이 났음. ㅋㅋㅋ
아 재밌다, 다른것도 내주삼! 우히히히
불량화쏘// 그렇게 치면 atoi도 sscanf로 하면 쉽게 구현가능함
■ 사실 상용으로 작성할려면 포인터 체크한 후에 isdigit로 파라메터가 `0`-`9`인지 확인할 필요가 있음. (이렇게 하지 않으면 한달쯤 후에 이유없이 뻗음)
http://codepad.org/ROq5AkzL
다소 수정
ALK // 한수 위임을 인정함. 조금전까지 몰랐음.
문자열 중에 숫자가 아닌 게 하나라도 있으면 바로 false를 내뱉는 불친절한 함수지만 일단 패스 =3
불량화쏘 // 흠좀무;
ALK님 소스부터 이해해 봐야겠다. : )
http://codepad.org/7VJptQrb
ALK의 군더더기 하나 없는 코드에 더러운 코드를 추가해서 죄송.. 음수처리 추가.
http://pjb7687.dnip.net/rosetta/read/17/Scheme/
심심해서 scheme으로 재작성 =3