atoi 구현 테스트 에러
글쓴이: 익명 사용자 / 작성시간: 수, 2002/08/21 - 4:52오후
The C Programming Language를 보고 공부를 하고 있는데 atoi함수를
간단하게 구현하는게 있어서 테스트중인데 세그폴트가 나네요.
(페이지 43)
소스는 다음과 같고요.
#include
void atoi(char s[]);
int main(void)
{
char *ch = "891";
atoi (*ch);
return 0;
}
void atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
printf ("%d", n);
}
컴파일을 하면 다음과 같은 에러가 납니다.
$ gcc -o atoi -Wall atoi.c
atoi.c In function `main'
atoi.c9 warning passing arg 1 of `atoi' makes pointer from
integer without a cast
실행하면 이렇게 되고요.
$ ./atoi
Segmentation fault
포인터를 잘못 쓴건 확실한데 어디를 고쳐야 이 atoi함수가 제대로
동작하는지 테스트할 수 있을까요? 그리고 시간되시는 분은 atoi함수
설명도 좀 부탁드려도 될까요. 책에는 저렇게 써 있는데 암만봐도
이해가 안되요....
감사합니다~~
Forums:
Re: atoi 구현 테스트 에러
atoi 함수를 구현하는 예제군요...
atoi 함수는 쉽게 말하면.. 문자열 -> 숫자로 변환해주는거죠..
----------------------------------------------------------
NAME
atoi - convert a string to an integer.
SYNOPSIS
#include
int atoi(const char *nptr);
------------------------------------------------------------
자세한건 man atoi 해보시면... 됨니다..
atoi (*ch); 이 부분을여...
atoi (ch); 이렇게 고치면 됩니다....
그럼 의도대로 891이 출력 되겠죠...
그럼 좋은 하루 되시길...
Re: atoi 구현 테스트 에러
atoi (*ch);
이 라인을
atoi ( ch ); 고치세요
그리고 왜 이렇게 해야되는지는 한번 생각해 보시길...
그럼 고운 하루...
C초보 wrote..
The C Programming Language를 보고 공부를 하고 있는데 atoi함수를
간단하게 구현하는게 있어서 테스트중인데 세그폴트가 나네요.
(페이지 43)
소스는 다음과 같고요.
#include <stdio.h>
void atoi(char s[]);
int main(void)
{
char *ch = "891";
atoi (*ch);
return 0;
}
void atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
printf ("%d", n);
}
컴파일을 하면 다음과 같은 에러가 납니다.
$ gcc -o atoi -Wall atoi.c
atoi.c In function `main'
atoi.c9 warning passing arg 1 of `atoi' makes pointer from
integer without a cast
실행하면 이렇게 되고요.
$ ./atoi
Segmentation fault
포인터를 잘못 쓴건 확실한데 어디를 고쳐야 이 atoi함수가 제대로
동작하는지 테스트할 수 있을까요? 그리고 시간되시는 분은 atoi함수
설명도 좀 부탁드려도 될까요. 책에는 저렇게 써 있는데 암만봐도
이해가 안되요....
감사합니다~~
댓글 달기