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

qurinel의 이미지

atoi 말구요..
스트링으로 '11101'을 받았으면
그걸 똑같이 정수값 11101로 바꿀 수 없나요?
scanf로 받으니 계속 1 1 1 0 1 이렇게 한칸씩 띄고 입력을 해야 되서
스트링으로 받고 다시 정수로 바꾸려고 하는데요..
도움 좀 주세요.. ㅠㅠ

wkpark의 이미지

이건 c언어 기초강좌 등등에서 거의 언제나 등장하는 문제입니다.

구글링하셔도 금방 답이 나옵니다.

온갖 참된 삶은 만남이다 --Martin Buber

winner의 이미지

궁금.

wkpark의 이미지

과제일 것으로 추측됩니다 :>

온갖 참된 삶은 만남이다 --Martin Buber

오호라의 이미지

교수, 강사분이 약간의 꼬은거죠. ^^; ㅋㅋㅋ

Hello World.

blueiur의 이미지


뒤에서 한자리씩 끊어서 읽으면서 자리수가 하나 증가될때마다
*10 해주신 후 그 값을 다 더해주시면 됩니다.
반대의 경우는 /10을 해주시면 되겠지요.

jick의 이미지

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 ......

이하 생략.

wkpark의 이미지

이렇게 하셨다가는.... ㅋ;;

온갖 참된 삶은 만남이다 --Martin Buber

gamdora의 이미지

휴, 힘들게 다 썼습니다.

그런데 16비트 정수만 처리됩니다.

32비트는 언제 다 처리하지요······? T_T

댓글 첨부 파일: 
첨부파일 크기
Package icon str2int.zip318.74 KB
wkpark의 이미지

온갖 참된 삶은 만남이다 --Martin Buber

winner의 이미지

원래 source가 몇줄이 나왔는지는 모르겠지만
아마도 freebsd의 source보다는 적게 나왔을 거 같네요.

Programmer의 노력만을 염두한다면 정말 훌륭하십니다.
그리고 덕분에 웃습니다.

wkpark의 이미지

아하 유머였군요? ㅋㅋㅋㅋㅋ
gamdora님의 대박 쎈스 ㅎㅎ
너무 짖궂으셔ㅋ

온갖 참된 삶은 만남이다 --Martin Buber

gamdora의 이미지

하하하, 들켰네요.

원래 소스는 다음과 같습니다:

[geshifilter-code]
#!/usr/bin/perl

$MIN = 0;
$MAX = 2**16 - 1;
$OUTPUT = 'str2int.c';

open SRC, "> $OUTPUT";
print SRC <<EOP;
int str2int(char *s)
{
EOP
print SRC <<EOP foreach ($MIN .. $MAX);
	if (!strcmp(s, "$_")) return $_;
EOP
print SRC "}\n";
close SRC;


[/geshifilter-code]
grassman의 이미지

다만 16비트 값을 넘어가면 결과값을 예측할 수 없는 버그가 있군요.
제출하는 학생이나 제출받는 교수님이나 괴로울 듯한 소스입니다.

sangwoo의 이미지

너무 짖궂으십니다 ㅠㅠ
하지만 센스에 +1
----
Let's shut up and code.

----
Let's shut up and code.

kalevala의 이미지

(int)strtol(str,NULL,10)

return 값이 원하시는 숫자일겁니다.

strtol의 세번째 parameter 에 진수 넣으시면 됩니다. 참고로 16,10,8 만 지원합니다.

winner의 이미지

atoi가 대게 strtol을 포장해서 쓰던데요...
그리고 2진법부터 35진법까지(즉 알파벳 Z까지) 지원됩니다.
위의 freebsd source 분석 바람.

4ipperz의 이미지

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.