用法:将字符串里的数字字符转化为整型数,返回整型值。
转化时会跳过前面的空白字符,遇到正负号和数字字符再进行转换,如果遇到其他字符,就结束。
int my_atoi(char* s)
{
assert(s);//先断言,判断指针S是否为空指针
int sum = 0;
char* s1 = NULL;
char* s2 = NULL;
char* s3 = s;
while (isspace(*s))
{
s++;//跳过空字符
}
if ((*s > '0' && *s < '9') || (*s == '-')||(*s == '+'))//判断是否是数字字符和正负号
{
if ((*s == '-') || (*s == '+'))
s++;
s1 = s;//记住起始位置
while (*s > '0' && *s < '9')
{
s2 = s;//记住最后一个数字的位置
s++;
}
}
int ret = 1;
for (; (s2 >= s1) && (s2 != NULL); s2--)
{
sum += (*s2-48) * ret;
ret *= 10;
}
if (*s3 == '-')
return -sum;
else
return sum;
}
int main()
{
char* str1 = "-1234.34";
int ret = my_atoi(str1);
printf("%d\n", ret);
return 0;
}
标签:字符,函数,int,s2,sum,ret,char,atoi,模拟
From: https://blog.csdn.net/zxybf_/article/details/136899153