1.atoi的使用
atoi是将字符串转化为int类型数字的一个库函数
int main()
{
char str[] = "123568";
int a;
a = atoi(str); /*将字符串转化为int型的数字*/
printf("%d\n", a);}
2.模拟atoi函数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
enum State
{
VAILD,
INVAILD
}Sta = INVAILD;
int myatoi(const char* str)
{
assert(str);
if (*str == '\0')
{
return 0;
}
while (isspace(*str))
{
str++;
}
int flag = 1;
if (*str == '+')
{
flag = 1;
str++;
}
else if(*str == '-')
{
flag = -1;
str++;
}
long long ret = 0;
while (*str !='\0')
{
if (isdigit(*str))
{
ret = ret * 10 + flag * (*str - '0');
if (ret > INT_MAX || ret < INT_MIN)
{
return 0;
}
str++;
}
else
{
return (int)ret;// INVAILD 非法转换
}
//str++;
}
if (*str == '\0')
{
Sta = VAILD;//全部转化完毕
return (int)ret;
}
}
int main()
{
//char str[20] = "a2345";
//char str[20] = "23a45";
char str[20] = "1314";
int ret = myatoi(str);
if (Sta == VAILD)
{
printf("合法转换:%d\n", ret);
}
else
{
printf("非法转换:%d\n", ret);
}
return 0;
}