스트링을 정수로 바꾸는 방법 알려주세요

120
points
points
atoi 말구요..
스트링으로 '11101'을 받았으면
그걸 똑같이 정수값 11101로 바꿀 수 없나요?
scanf로 받으니 계속 1 1 1 0 1 이렇게 한칸씩 띄고 입력을 해야 되서
스트링으로 받고 다시 정수로 바꾸려고 하는데요..
도움 좀 주세요.. ㅠㅠ
KLDPOpen Source, Geek, IT... |
|
사용자 로그인둘러보기KLDP 내용 검색KLDP Wiki |
points
이건 c언어 기초강좌
이건 c언어 기초강좌 등등에서 거의 언제나 등장하는 문제입니다.
구글링하셔도 금방 답이 나옵니다.
points
atoi는 왜 안되죠?
궁금.
points
과제일 것으로
과제일 것으로 추측됩니다 :>
points
저도 한표입니다.
교수, 강사분이 약간의 꼬은거죠. ^^; ㅋㅋㅋ
points
ㅎㅎ
뒤에서 한자리씩 끊어서 읽으면서 자리수가 하나 증가될때마다
*10 해주신 후 그 값을 다 더해주시면 됩니다.
반대의 경우는 /10을 해주시면 되겠지요.
points
이렇게 하면 됩니다.
int homework_convert_string_to_integer(char *input_string) { if (!strcmp(input_string, "0")) return 0; if (!strcmp(input_string, "1")) return 1; if (!strcmp(input_string, "2")) return 2; if ......이하 생략.
points
이렇게
이렇게 하셨다가는.... ㅋ;;
points
휴, 힘들게 다
휴, 힘들게 다 썼습니다.
그런데 16비트 정수만 처리됩니다.
32비트는 언제 다 처리하지요······? T_T
points
oh my
oh my god..;;
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/strtol.c?rev=1... 를 참조해보세요..
points
^_^. meataprogramming의 진수를 보여주시는군요.
원래 source가 몇줄이 나왔는지는 모르겠지만
아마도 freebsd의 source보다는 적게 나왔을 거 같네요.
Programmer의 노력만을 염두한다면 정말 훌륭하십니다.
그리고 덕분에 웃습니다.
points
아하 유머였군요?
아하 유머였군요? ㅋㅋㅋㅋㅋ
gamdora님의 대박 쎈스 ㅎㅎ
너무 짖궂으셔ㅋ
points
펄* 스크립트 16줄
하하하, 들켰네요.
원래 소스는 다음과 같습니다:
points
센스 굿입니다. ^^b
다만 16비트 값을 넘어가면 결과값을 예측할 수 없는 버그가 있군요.
제출하는 학생이나 제출받는 교수님이나 괴로울 듯한 소스입니다.
points
너무 짖궂으십니다
너무 짖궂으십니다 ㅠㅠ
하지만 센스에 +1
----
Let's shut up and code.
points
...?
(int)strtol(str,NULL,10)
return 값이 원하시는 숫자일겁니다.
strtol의 세번째 parameter 에 진수 넣으시면 됩니다. 참고로 16,10,8 만 지원합니다.
points
이것도 쓰면 안 되는 것 아닌가요?
atoi가 대게 strtol을 포장해서 쓰던데요...
그리고 2진법부터 35진법까지(즉 알파벳 Z까지) 지원됩니다.
위의 freebsd source 분석 바람.
points
이런 방법은 어떨까요?
int str2int(char * str)
{
int length = strlen(str);
int result = 0;
int i;
for(i = 0 ; i < length ; i++)
{
result = result + ( *(str+i)-'0' ) * pow( double(10), length - i - 1);
}
return result;
}
--------------------------------------
Execute!
4ipperz@gmail.com