将str转化成int

  1. #include<stdio.h>
  2. #include<string>
  3. int err = 0;
  4. int str_to_int(char *s)
  5. {
  6. long sum = 0;
  7. bool isPositive = true;
  8. bool isZeroStart = true;
  9. bool flag = false;
  10. char c;
  11. int maxInt = 0x7fffffff;
  12. bool flag2;
  13. bool isNumStart = false;
  14. while (*s != '\0') {
  15. c = *s;
  16. flag = (c >= '0' && c <= '9');
  17. if (c == '-') {
  18. if (isNumStart) {
  19. err = 9;
  20. printf("- is illegal");
  21. return -1;
  22. }
  23. isPositive = false;
  24. s++;
  25. } else if (c == '0' && isZeroStart) {
  26. isNumStart = true;
  27. s++;
  28. } else if (c == '+') {
  29. if (isNumStart) {
  30. err = 9;
  31. printf("+ is illegal");
  32. return -1;
  33. }
  34. if (*(s + 1) == '\0') {
  35. err = 10;
  36. printf("num is +\n");
  37. return -1;
  38. }
  39. flag2 = (*(s + 1) >= '0' && *(s + 1) <= '9');
  40. if (!flag2) {
  41. err = 11;
  42. printf("num is ilegal\n");
  43. return -1;
  44. }
  45. ++s;
  46. } else if (flag) {
  47. sum = sum * 10 + c - '0';
  48. isNumStart = true;
  49. if (sum >= maxInt) {
  50. break;
  51. }
  52. isZeroStart = false;
  53. ++s;
  54. } else {
  55. err = 11;
  56. printf("num is ilegal\n");
  57. return -1;
  58. }
  59. }
  60. if (isPositive) {
  61. return sum;
  62. }
  63. return -sum;
  64. }
  65. int main(int argc, char *argv[])
  66. {
  67. if (argc != 2) {
  68. printf("input num please\n");
  69. return -1;
  70. }
  71. char *str = argv[1];
  72. int num = str_to_int(str);
  73. if (err) {
  74. printf("parse str to num is err\n ");
  75. return -1;
  76. }
  77. printf("num = %d\n", num);
  78. return 0;
  79. }

该程序支持+,-开头,允许000开头

字符串转化成int的更多相关文章

  1. ipv4的ip字符串转化为int型

    要求: 将现有一个ipv4的ip字符串(仅包含数字,点,空格), 其中数字和点之间的空格(至多一个)是合法的,比如“12 .3. 4 .62”,其他情况均为非法地址.写一个函数将ipv4地址字符串转化 ...

  2. C# 判断字符串是否是int/double

    using System.Text.RegularExpressions; /// <summary> /// 判断字符串是否是int/double /// </summary> ...

  3. js将json字符串转化成json对象的方法

    js将json字符串转化成json对象的方法: JSON.parse(jsonObject)

  4. Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),

    Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: sele ...

  5. iOS 16进制字符串转换成int十进制

    NSRange rangeErr; rangeErr.location = 6; rangeErr.length = 2; NSString *strings = [value substringWi ...

  6. java中字符串String 转 int(转)

    java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...

  7. C语言:将16进制字符串转化为int类型值

    将16进制字符串值转换为 int 整型值 此例中用 "1de" 作为测试字符串,实现代码如下: #include <stdio.h> #include <stdl ...

  8. 将逗号分隔 的字符串转化成List

    将逗号分隔 的字符串转化成List List<String> parIdListTmp = new ArrayList<String>(); String parIdArray ...

  9. 数组转集合、集合转数组、字符串数组与int型、long型数组等的转换

    在项目中经常会遇到数组转集合.集合转数组.数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: String str[] = { ...

随机推荐

  1. SpringMVC源码分析6:SpringMVC的视图解析原理

    title: SpringMVC源码分析6:SpringMVC的视图解析原理 date: 2018-06-07 11:03:19 tags: - SpringMVC categories: - 后端 ...

  2. 从0开始学Git——Git的常见操作

    Git常用命令 创建Git版本库 git init [目录]#创建目录版本库, 不写的话是当前目录 该命令会在目录中创建一个名为.git的隐藏目录 文件提交 添加文件: git add 文件名 #添加 ...

  3. Java虚拟机一看就懂01

    Jvm内存结构 --- 线程隔离区域说明: 1.1.程序计数器 线程私有 是一块内存空间 唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?) 1.2.Java虚拟机栈 线程私 ...

  4. MySql基础架构以及SQL语句执行流程

    01. mysql基础架构 SQL语句是如何执行的 学习一下mysql的基础架构,从一条sql语句是如何执行的来学习. 一般我们写一条查询语句类似下面这样: select user,password ...

  5. AI资源对接需求汇总:第3期

    更好的阅读体验,请查看首发原文链接:AI资源对接需求汇总:第3期 平台介绍 平台由人工智能领域几个知名原创公众号发起,总读者约25万. 主要面向人工智能领域的从业者,涵盖图像处理.三维计算机视觉.机器 ...

  6. Python -二叉树 创建与遍历算法(很详细)

    树表示由边连接的节点.它是一个非线性的数据结构.它具有以下特性. 一个节点被标记为根节点. 除根节点之外的每个节点都与一个父节点关联. 每个节点可以有一个arbiatry编号的chid节点. 我们使用 ...

  7. unity shader 纹理&透明效果

    1.纹理映射基础 (1)纹理映射通过(u,v)坐标实现.注意:这句话时博主当时面试一家外企被问到的问题. (2)添加纹理属性:——MainTex("Main Tex",2D)=&q ...

  8. 《高效休息法》IT从业者如何高效休息

    这本书主要讲什么? 大脑疲劳和身体疲劳不同,身体再怎么休息,大脑疲劳还是会在不知不觉中积累 大脑是一个重量仅仅占体重2%,却消耗着20%能量的大胃王,这些能量大部分都用在了预设模式网络(Default ...

  9. 舍得 (学习html几天)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 【selenium】- 自动化测试必备工具FireBug&FirePath

    本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. FireBug FireBug的安装: 如果使用Firefox浏览器的话,推荐使用较低版本,比如27-32.否则会报错. 点击右上角的菜 ...