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");
-
scanf("%s",buf);
-
-
printf("%s\n",buf);
-
-
num = my_atoi(buf);
-
//num = atoi(buf); //使用这个函数,测试我们的功能是否和系统提供的完全相同
-
-
printf("buf = %s,my_atoi(buf) = %d\n",buf,num);
-
-
return 0;
- }
点击(此处)折叠或打开
-
ubuntu@ubuntu:~$ gcc my_atoi1.c
-
ubuntu@ubuntu:~$ ./a.out
-
Please input a string within '0' - '9'
-
123jakf
-
123jakf
-
buf = 123jakf,my_atoi(buf) = 123
-
ubuntu@ubuntu:~$ ./a.out
-
Please input a string within '0' - '9'
-
-123ksfja
-
-123ksfja
-
buf = -123ksfja,my_atoi(buf) = -123
-
ubuntu@ubuntu:~$ ./a.out
-
Please input a string within '0' - '9'
-
fjsakjfks123
-
fjsakjfks123
-
buf = fjsakjfks123,my_atoi(buf) = 0
-
ubuntu@ubuntu:~$ ./a.out
-
Please input a string within '0' - '9'
-
123
-
123
-
buf = 123,my_atoi(buf) = 123
-
ubuntu@ubuntu:~$ ./a.out
-
Please input a string within '0' - '9'
-
123jskfj
-
123jskfj
- buf = 123jskfj,my_atoi(buf) = 123
atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整数数)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII 码字符)
toupper(将小写字母转换成大写字母)
tolower(将大写字母转换成小写字母)