atoi函数源代码
2014-04-23 11:01
316 查看
int atoi(const char *nptr);
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
isspace(int x)
{
if(x==' '||x=='\t'||x=='\n'||x=='\f'||x=='\b'||x=='\r')
return 1;
else
return 0;
}
isdigit(int x)
{
if(x<='9'&&x>='0')
return 1;x`
else
return 0;
}
int atoi(const char *nptr)
{
int c; /* current char */
int total; /* current total */
int sign; /* if '-', then negative, otherwise positive */
/* skip whitespace */
while ( isspace((int)(unsigned char)*nptr) )
++nptr;
c = (int)(unsigned char)*nptr++;
sign = c; /* save sign indication */
if (c == '-' || c == '+')
c = (int)(unsigned char)*nptr++; /* skip sign */
total = 0;
while (isdigit(c)) {
total = 10 * total + (c - '0'); /* accumulate digit */
c = (int)(unsigned char)*nptr++; /* get next char */
}
if (sign == '-')
return -total;
else
return total; /* return result, negated if necessary */
}
需要注意的是,此函数只对字符串中为数字的进行转换,而对于十六进制对应的字符串则转换失败,即转换后的数字不是真实的十六进制数。
参考:http://blog.csdn.net/youbang321/article/details/7887990
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
isspace(int x)
{
if(x==' '||x=='\t'||x=='\n'||x=='\f'||x=='\b'||x=='\r')
return 1;
else
return 0;
}
isdigit(int x)
{
if(x<='9'&&x>='0')
return 1;x`
else
return 0;
}
int atoi(const char *nptr)
{
int c; /* current char */
int total; /* current total */
int sign; /* if '-', then negative, otherwise positive */
/* skip whitespace */
while ( isspace((int)(unsigned char)*nptr) )
++nptr;
c = (int)(unsigned char)*nptr++;
sign = c; /* save sign indication */
if (c == '-' || c == '+')
c = (int)(unsigned char)*nptr++; /* skip sign */
total = 0;
while (isdigit(c)) {
total = 10 * total + (c - '0'); /* accumulate digit */
c = (int)(unsigned char)*nptr++; /* get next char */
}
if (sign == '-')
return -total;
else
return total; /* return result, negated if necessary */
}
需要注意的是,此函数只对字符串中为数字的进行转换,而对于十六进制对应的字符串则转换失败,即转换后的数字不是真实的十六进制数。
参考:http://blog.csdn.net/youbang321/article/details/7887990
相关文章推荐
- myeclipse 一些提示信息快捷键设置
- java中JAXB标准实现java对象与xml互转
- 图像放大并进行BiCubic插值 Matlab/C++代码
- Java内部类总结
- 2014年最佳的10款 PHP 开发框架
- JVM系列七:JDK5.0中JVM堆模型、GC垃圾收集详细解析
- JAVA基础:八进制,十六进制表示
- php 调用.net的webservice 需要注意的
- Spring 事务配置
- django1.62发送邮件(个人总结)
- opencv2.2.0源代码(include文件)分析(1)
- JVM系列六:java6_garbage collection(垃圾回收)
- 面向对象的编程 继承
- C++ STL--stack/queue 的使用方法
- java入门:JDBC & SQL Server
- 同步代码块
- java入门:文件操作
- java 实现小黄鸡智能聊天
- PHP 实现见得的二叉排序树查找算法
- java入门:STL