atoi库函数
#include <stdio.h>
int main()
{
char*str = "4194";//字符串
int res = atoi(str);// 库函数 把一个字符转转换成一个整形
printf("res=%d\n", res);
return 0;
}
atoi 是把一个字符串转换成一个整形
下面模拟实现一下 atoi
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
int my_atoi(const char*str)
{
assert(str != NULL);
//跳过空格 如果是 ‘ 4194’这种情况
while (*str == ' ')// 跳过空格
{
str++;
}
int flag = 1;// 符号位
if (*str == '-')
{
flag = -1; //如果有- 则置-1 看是否是负数
str++; //str++ 判断后面的字符是否是数字
}
else if (*str == '+')
str++; // str++ 判断后面的字符是否是数字
long long res = 0;
while (*str != '\0')
{
if (*str<'0' || *str>'9')// 如果是个字符 无效的字符串
break; //直接跳出
res = res * 10 + (*str - '0');//字符4是52-字符0就是真的数字4了 字符0是48
if (res > INT_MAX || -res < INT_MAX) //判断这个数是否超出整形范围 若超范围了 返回0
return 0;
str++;
}
return flag*res;
}
int main()
{
char*str = "-4194";
int res1 = atoi(str);
printf("res1=%d\n", res1);
int res2 =my_atoi(str);
printf("res2=%d\n", res2);
return 0;
}