1.atoi函数的原型 int atoi(const char *nptr); 2.GNU官方解释 The atoi() function converts the initial portion of the string pointed to by nptr to int. 3.注意要点: (1)实现把输入的字符串转换成对应的整数。 (2)应该考虑到以负号、正号、空格和TAB键开头的情况 (3)假如第一个字符是(2)中的四种情况,则应该跳过这个字符,从第二个字符开始比较 (3)除了(3)的情况之外,若第一个字符就是0--9中的字符,则进行转换,直到遇到不是0--9之间的字符为止。 (4)除了(3)的情况之外,若第一个字符不是0--9中的字符,则不进行转换,直接返回0
点击(此处)折叠或打开
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int my_atoi(const char *s)
{
int num = 0;
int signal = 1;
//一般对输入参数是指针的情况都要做参数的有效性检查,断言比较直观方便,推荐使用
assert(s !=NULL);
//对于以加号、减号、空格和TAB键开头的字符,需要直接跳过,从下一个字符开始检查
if(*s =='-')
{
s++;
signal =-1;//不能忽略以负号开头的字符串
}
if(*s =='+')
{
s++;
signal = 1;//不能忽略以正号开头的字符串
}
if((*s =='')||(*s ==''))
{
s++;
}
//只处理0--9之间的字符串,这样转化为整数才有意义
if(!(*s >='0'&&*s <='9'))
{
return 0;
}
while(*s !='\0')
{
if(*s >='0'&&*s <='9')
{
//把字符串转换成整数
num = num * 10 +(*s -'0');
s++;
}
else
{
s++;
}
}
return signal * num;
}
int main(int argc,char agrv[])
{
char buf[20];
char *s =NULL;
int num = 0;
printf("Please input a string within '0' - '9'\n");