把字符串转换成整数
2015-09-08 15:04
423 查看
bool g_Invalid = true; long long strToIntCore(const char* str, bool minus) { long long num = 0; while(*str != '\0') { if(*str >= '0' && *str <= '9') { int flag = minus ? -1 : 1; num = num * 10 + flag * (*str - '0'); if((!minus && num > 0x7FFFFFFF) ||(minus && num < (signed int)0x80000000) ) { num = 0; break; } str++; }else { num = 0; break; } } if(*str == '\0') g_Invalid = false; return num; } int strToInt(const char* str) { 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; } // ====================测试代码==================== void Test(char* string) { int result = strToInt(string); if(result == 0 && g_Invalid == true) printf("the input %s is invalid.\n", string); else printf("number for %s is: %d.\n", string, result); } int main(int argc, char* argv[]) { 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("-"); return 0; }
相关文章推荐
- 如何让 IIS Express 支持其他机器访问
- WireShark查看指定的PC应用的网络包
- java中的重载、重写和隐藏
- VS2015编译连接mongodb(mongodb C++ driver)
- spring_150804_controller
- Linux之性能调优--CPU_内存_IO_网络
- C语言中int的取值范围是怎么算出来的
- Binary Tree Preorder Traversal
- openssl - X509证书操作函数
- 漫谈C指针第十四讲---一个指针应用实例
- IOExceptionjava.net.UnknownHostException: api.weix
- ASMCMD fails to start on module libnnz10.so, permission denied
- 图片处理服务器
- JAXB--简单应用
- vmware创建虚拟机时一直没反应
- hibernate级联保存 ,同时自动获取外键值
- java 页面url传值中文编码&解码
- Android中的Service详解
- 行为型模式:责任链模式(Chain of Responsibility Pattern)
- 分享一个简单的HttpClient的例子