把字符串转换为整数 代码(C)

本文地址: http://blog.csdn.net/caroline_wendy

题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数.

须要考虑异常处理, 正负数, 还有Int的最大值(0x7FFFFFFF)和最小值(0x80000000)等情况.

代码:

  1. /*
  2. * main.cpp
  3. *
  4. * Created on: 2014.7.12
  5. * Author: spike
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <math.h>
  12.  
  13. enum Status {kValid=0, kInvalid};
  14.  
  15. int g_nStatus = kValid;
  16.  
  17. long long StrToIntCore(const char* digit, bool minus) {
  18. long long num = 0;
  19. while (*digit != '\0') {
  20. if (*digit >= '0' && *digit <= '9') {
  21. int flag = minus ?
  22.  
  23. -1 : 1;
  24. num = num*10 + flag*(*digit-'0');
  25. if ((!minus && num>0x7FFFFFFF) || (minus && num <(signed int)0x80000000)) {
  26. num = 0;
  27. break;
  28. }
  29. digit++;
  30. } else {
  31. num = 0;
  32. break;
  33. }
  34. }
  35. if (*digit == '\0') {
  36. g_nStatus = kValid;
  37. }
  38. return num;
  39. }
  40.  
  41. int StrToInt(const char* str) {
  42. g_nStatus = kInvalid;
  43. long long num = 0;
  44. if (str != NULL && *str != '\0') {
  45. bool minus = false;
  46. if (*str == '+')
  47. str++;
  48. else if (*str == '-') {
  49. str++;
  50. minus = true;
  51. }
  52.  
  53. if (*str != '\0')
  54. num = StrToIntCore(str, minus);
  55. }
  56.  
  57. return (int)num;
  58. }
  59.  
  60. int main(void)
  61. {
  62. char num[] = "-873141";
  63. int result = StrToInt(num);
  64. printf("result = %d\n", result);
  65. return 0;
  66. }

输出:

  1. result = -873141

编程算法 - 把字符串转换为整数 代码(C)的更多相关文章

  1. 字符串转换为整数”123“-&gt;123

    字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给 ...

  2. (剑指Offer)面试题49:把字符串转换为整数

    题目: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 思路: 考虑+.-.空格.非数字字符,以及溢出问题 代码: #include <iostream> using n ...

  3. atoi函数——将字符串转换为整数

    atoi在一个叫<cstdlib>的库里,可以把字符串直接转换为整数,贼强势. 还有一个atof,就是换成浮点数,实质上是一样的. 例子: #include<cstdlib> ...

  4. c程序十六进制字符串转换为整数与反转

    字符串转整数使用sscanf ; char *buf = "1d5ce"; sscanf (buf, "%x", &value); printf (&q ...

  5. 剑指offer 67. 字符串转换为整数(Leetcode 8. String to Integer (atoi))

    题目:剑指offer 67题 需要考虑的情况:空指针.nullptr.空字符串"".正负号.数值溢出.在写代码的时候对这些特殊的输入都定义好合理的输出.可以定义一个全局布尔型变量g ...

  6. PHP算法之字符串转换整数 (atoi)

    请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...

  7. 编程算法 - 不用加减乘除做加法 代码(C)

    不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四 ...

  8. 编程算法 - 最小的k个数 代码(C)

    最小的k个数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用高速排序(Quick Sort)的方法 ...

  9. 编程算法 - 篱笆修理(Fence Repair) 代码(C)

    篱笆修理(Fence Repair) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 把一块木板切成N块, 每次切两块, 分割的开销是木板长度, ...

随机推荐

  1. html中<a>标签_top和_parent的区别

    在html中,<a>标签有个target属性,而targe属性有四个值,分别是:_blank._self._top._parent.前两个相信很好理解,第一个就是在新窗口中打开的意思,第二 ...

  2. .net中的WebForm引人MVC的控制器

    当下.net中比较火的模式MVC模式,说实话对于菜鸟的我还没有遇到一个比较健全的MVC模式的项目也是比较遗憾.偶然间在网上看到WebForm实现MVC中的模式(主要是控制器...)就学习了一波,下面是 ...

  3. Hibernate搭建框架(一)

    什么是hibernate? hibernate是一个orm框架,实现了对JDBC的封装.通过xml文件来实现类和表之间的映射,这样就可以使用操作对象的方式来操作数据库. 官网:http://hiber ...

  4. SQLServer外部数据导入--Excel版

    例如要在test表里插入多行数据 假设字段有: ID.Name 首先要有需要导入的数据的Excel A1 对应ID B1 对应Name 选中Excel第一行的空白处,比如C1,在工具栏的函数文本框里输 ...

  5. SQLServer2008 关于数值字段列的累计

    create table #temp20110610(     id int identity(1,1),     date varchar(8),     qty float) insert int ...

  6. 详细解读css中的浮动以及清除浮动的方法

    对于前端初学者来说,css浮动部分的知识是一块比较难以理解的部分,下面我将把我学习过程中的心得分享给大家. 导读:   1.css块级元素讲解 2.css中浮动是如何产生的 3.出现浮动后,如何清除浮 ...

  7. 【转载】JavaScript中同名标识符优先级-Snandy

    一,局部变量先使用后声明,不影响外部同名变量 var x = 1; // --> 外部变量x function fn(){ alert(x); // --> undefined 局部变量x ...

  8. 构造函数中this,return的详解

    function Foo(name,age){ this.name=name; this.age=age; } var foo=new Foo("Tom",14); foo.nam ...

  9. springBoot jar/war打包部署问题

    先给pom.xml配置导出插件 <!--配置插件将Maven 插件 导出成为jar --> <plugin> <groupId>org.springframewor ...

  10. 协议(Protocol) 和代理(Delegate)

    1.概念与组成 delegate是iOS中一种常见的设计模式,是一种消息传递的的方式,常见的消息传递方式还有以下几种: 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式. ...