淡泊明志 宁静致远
分类: C/C++
2007-01-04 08:34:40
【C语言库函数源代码】
【本程序在Dev C++ 4.9.9.2 下编译通过】
#include
/*
这个函数调用的是库函数中的
strtol()函数,关于这个函数的
源代码后面将会给出。
*/
int my_atoi(char *str)
{
return (int) strtol(str, NULL, 10);
}
/*
下面的两个函数没有调用strtol()函数,
而是直接给出了该函数的实现。
*/
int my_atoi01(const char *str)
{
long int v=0;
int sign = 0;
while ( *str
== ' ') str++;
if(*str ==
'-'||*str == '+')
sign = *str++;
while
(isdigit(*str))
{
v = v*10 + *str - '0';
str++;
}
return sign
== '-' ? -v:v;
}
int my_atoi02(char *str)
{
int sign;
int n;
unsigned char *p;
p=str;
while
(isspace(*p) ) p++;
sign = (*p == '-' ) ? -1 : 1;
if (*p=='+'
|| *p=='-' ) p++;
for (n=0;
isdigit(*p); p++)
n = 10*n + (*p - '0');
return
sign*n;
}
int main()
{
char * str =
"2147483647";
printf("%d\n",my_atoi(str));
str = "-2147483648";
printf("%d\n",my_atoi(str));
str = "2147483647";
printf("%d\n",my_atoi01(str));
str = "-2147483648";
printf("%d\n",my_atoi01(str));
str = "2147483647";
printf("%d\n",my_atoi02(str));
str = "-2147483648";
printf("%d\n",my_atoi02(str));
system("pause");
return 0;
}