atoi()函数的原理分析和代码实现
Posted 代二毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atoi()函数的原理分析和代码实现相关的知识,希望对你有一定的参考价值。
函数功能:
1.C语言库函数名: int atoi(const char *nptr);
2.atoi(array to integer )函数参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \\0) 字符时停止转换,返回整型数。
实现原理:
在计算中是只有0和1的,我们看到字符1 、 2 、3···和数字1、2.、3···在计算中都是用0和1来表示的,我们存储时会按照ASCII码进行存放。数字和字符都会根据ASCII码表进行转换,把一串二进制数据存入计算机。我们将字符串转换数字的根据就是ASCII表,把字符1 、 2 、3···和数字1、2.、3···按照ASCII表进行映射。
实现代码:
int my_atoi(char* pstr)
{
int sum = 0;
int sign = 1; //标志位
if(pstr == NULL) //判断指针是否为空
{
printf("Pointer is NULL\\n");
return 0;
}
while(isspace(*pstr) == 0) //跳过前面的空格字符
{
pstr++;
}
if(*pstr == '-') //判断正负号
{
sign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
// 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
while(*pstr >= '0' && *pstr <= '9')
{
sum = sum * 10 + *pstr - '0';
pstr++;
}
sum = sign * sum;
return sum;
}
以上是关于atoi()函数的原理分析和代码实现的主要内容,如果未能解决你的问题,请参考以下文章
8. 字符串转整数(实现atoi函数) [leetcode 8: String to Integer (atoi)]
8. 字符串转整数(实现atoi函数) [leetcode 8: String to Integer (atoi)]
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段