把字符串转换为对应的整数
2016-06-21 17:04
232 查看
这个问题的难点在于能否把边界条件考虑齐全:
一:开始时遇到空格时如何处理 //如 1234565dafsgdgg
二:在开始时有很多0如何处理 // 000001341asdfgg
三:在最前面遇到+-号怎么处理,在输出时如何处理 // +13454fdggfgf,-123435
四:当转换的整数越界了怎么处理// 134253678976543245678543
五:当遇到非数字字符时如何处理 //#&* aerty1345
六:为空串时如何处理(str == NULL)
typedef long long INT_64;
int StrToInt(char *str)
{
static INT_64 MAX = (INT_64)((unsigned)~0 >> 1);
static INT_64 MIX = -(INT_64)((unsigned)~0 >> 1) - 1;
long long num = 0;
if (str == NULL)
{
return 0;
}
//空格
while (isspace(*str))
++str;
int sign = 1;
if (*str == '+' || *str == '-')
{
if (*str == '-')
{
sign = -1;
}
++str;
}
while (isdigit(*str))
{
int c = *str - '0';
if ((sign > 0) && ((num > MAX / 10) || ((num == MAX) && (c >= MAX % 10))))
{
num = MAX;
return num;
}
else if ((sign < 0) && ((num > MAX / 10) || ((num == MAX/10) && (c >= MAX % 10))))
{
num = MIX;
return num;
}
num = num * 10 + c;
++str;
}
if (sign > 0)
return num;
return -num;
}
相关文章推荐
- 剑指offer---把字符串转换为整数(49)
- C#中System.DateTime.Now.ToString()用法
- [freeCodeCamp] solution to JUGGLING ASYNC
- 对于app开发你了解多少?开发一个app多少钱
- 《Spring实战》学习笔记-第八章:使用Spring Web Flow
- 6.2 构造核
- Android进阶之自定义View实战(二)九宫格手势解锁实现
- ViewPage事件冲突处理
- 求二叉树中两个节点最远的距离
- bss、data和rodata区别与联系
- TCP协议中的三次握手四次挥手问题
- Asp.net中防止用户多次登录的方法
- 第三次冲刺--软件工程
- Hi-Fi
- 线程池
- iOS申请邓白氏总结
- c写Python扩展模块
- view基础知识介绍(一)
- C#取得站点跟目录
- android之对话、单复框的使用