一.atoi函数介绍简单来讲,就是将一个字符串中的数字字符变为整数。二.一些特殊点1.字符串内含有字母#include

#include

int main()

{

char a[]="123412";

int ret=atoi(a);

printf("%d",ret);

return 0;

}

例如一个字符串ch="a1234",那么atoi第一次检索时没有直接遇到数字,而是遇到了字母,那么就会返回0,如图。

2.字符串内含有空格atoi会跳过前面的空格,直至检索到数字。如果该字符串全部都是空格,那么就会返回0。

如果字符串数字和数字之间存在空格,那么不会继续检索。

3.字符串内含有正负号atoi会自动识别正负号,并在输出的数字前面加上正负号。

但如果是在数字之后的正负号,那么就会与数字后遇到字母,空格同理,停止继续检索。

三.atoi函数模拟实现在编写时,我们需要注意以下几点:1,开头遇到空格应往后继续跳过,直到遇到数字;2,如果碰到字母应直接返回0;3,应检查atoi转换后的数字是否还在int表示范围内。

代码如下

#include

#include

#include

#include

int myatoi(char* p)

{

if (*p == '\0')//判断是否为空指针

{

return 0;

}

while (isspace(*p))

{

p++;

}//判断空格

int flag = 1;

long m = 0;

if (*p == '+')

{

flag = 1;

p++;

}

else if (*p == '-')

{

flag = -1;

p++;

}//判断正负号

while (*p != '\0')

{

if (*p >= '0' &&*p <= '9')

{

m = m * 10 + flag * (*p - '0');

}//对数据进行转换

else

{

break; //你不是数字是不是就要break,离开循环

}

if (m< INT_MIN || m > INT_MAX)//判断是否超出int表示范围

break;

p++;

}

return m;

}

int main()

{

char a[1000];

fgets(a, 1000, stdin);//输入字符串

int len = strlen(a);

a[len - 1] = '\0';//计算字符串长度并在末尾加上斜杠0,因为我在这里是以字符数组的方式定义的

int m = myatoi(a);

printf("%d", m);

return 0;

}