C语言笔记21 •模拟atoi函数•
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;
}