Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1165352
  • 博文数量: 241
  • 博客积分: 4385
  • 博客等级: 上校
  • 技术积分: 2383
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-07 23:13
文章分类

全部博文(241)

文章存档

2013年(1)

2012年(8)

2011年(62)

2010年(109)

2009年(61)

分类: C/C++

2009-07-27 20:28:28

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int str2int(const char *str)
  3. {
  4.     int total = 0;
  5.     int sign = 1;
  6.     const char *pStr = str;

  7.     /* skip space */
  8.     while(*pStr == ' ')
  9.     {
  10.         ++pStr;
  11.     }

  12.     /* save sign */
  13.     if(*pStr == '-' || *pStr == '+')
  14.     {
  15.         if(*pStr == '-')
  16.         {
  17.             sign = -1;
  18.         }

  19.         ++pStr;
  20.     }

  21.     /* skip '0' */
  22.     while(*pStr == '0')
  23.     {
  24.         ++pStr;
  25.     }
  26.     
  27.     while(*pStr != '\0')
  28.     {
  29.         if(*pStr >= '0' && *pStr <= '9')
  30.         {
  31.             total = 10 * total + (*pStr - '0');
  32.         }

  33.         ++pStr;
  34.     }

  35.     if(sign == -1)
  36.     {
  37.         total = - total;
  38.     }

  39.     return total;
  40. }

  41. int main()
  42. {
  43.     int ret = 0;

  44.     ret = str2int("-12345");
  45.     ret = str2int("+12345");
  46.     ret = str2int("012345");
  47.     ret = str2int(" 12345");
  48.     ret = str2int("1234b");
  49.     ret = str2int("12b45");

  50.     return 0;
  51. }

阅读(915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~