剑指offer--字符串转数字 string to int
2016-01-18 00:00
381 查看
摘要: 字符串转数字 string to int
这是个常见的问题
这是个常见的问题
#include <stdio.h> #include <stdlib.h> long long StrToIntCore(const char* str, bool minus); enum Status {kValid = 0, kInvalid}; int g_nStatus = kValid; int StrToInt(const char* str) { g_nStatus = kInvalid; long long num = 0; if(str != NULL && *str != '\0') { bool minus = false; if(*str == '+') str ++; else if(*str == '-') { str ++; minus = true; } if(*str != '\0') { num = StrToIntCore(str, minus); } } return (int)num; } long long StrToIntCore(const char* digit, bool minus) { long long num = 0; while(*digit != '\0') { if(*digit >= '0' && *digit <= '9') { int flag = minus ? -1 : 1; num = num * 10 + flag * (*digit - '0'); if((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)) { num = 0; break; } digit++; } else { num = 0; break; } } if(*digit == '\0') { g_nStatus = kValid; } return num; } // ====================测试代码==================== void Test(char* string) { int result = StrToInt(string); if(result == 0 && g_nStatus == kInvalid) printf("the input %s is invalid.\n", string); else printf("number for %s is: %d.\n", string, result); } int main() { Test(NULL); Test(""); Test("123"); Test("+123"); Test("-123"); Test("1a33"); Test("+0"); Test("-0"); //有效的最大正整数, 0x7FFFFFFF Test("+2147483647"); Test("-2147483647"); Test("+2147483648"); //有效的最小负整数, 0x80000000 Test("-2147483648"); Test("+2147483649"); Test("-2147483649"); Test("+"); Test("-"); getchar(); return 0; }
相关文章推荐
- css3实现3D立体翻转导航特效
- CSS 伪元素
- jQuery图文tab手风琴切换焦点图特效
- jQuery 可拖拽进度条
- javascript中new Date()的浏览器兼容性问题
- 怎样使用PDF Transformer+将PDF转换为HTML
- JavaScript(一)
- jQuery-slimScroll控制滚动条样式的插件
- JS之dom对象
- Javascript 中 typeof 和 instanceof 的区别
- 运动学JS
- html页面中div+javascript实现粘贴
- 完美校验带网址、IP网址、FTP等格式的格式(jQuery Validate)
- 26、ASP.NET MVC入门到精通——后台管理区域及分离、Js压缩、css、jquery扩展
- json:实体类和JSON对象之间相互转化
- json封装数据
- H5页面设计
- H5页面设计
- js-错误处理与调试,JSON
- 平稳退化,JS和HTML标记分离,极致性能的JavaScript图片库