字符串转化成int
将str转化成int
#include<stdio.h>
#include<string>
int err = 0;
int str_to_int(char *s)
{
    long sum = 0;
    bool isPositive = true;
    bool isZeroStart = true;
    bool flag = false;
    char c;
    int maxInt = 0x7fffffff;
    bool flag2;
    bool isNumStart = false;
    while (*s != '\0') {
	c = *s;
	flag = (c >= '0' && c <= '9');
	if (c == '-') {
	    if (isNumStart) {
		err = 9;
		printf("- is illegal");
		return -1;
	    }
	    isPositive = false;
	    s++;
	} else if (c == '0' && isZeroStart) {
	    isNumStart = true;
	    s++;
	} else if (c == '+') {
	    if (isNumStart) {
		err = 9;
		printf("+ is illegal");
		return -1;
	    }
	    if (*(s + 1) == '\0') {
		err = 10;
		printf("num is +\n");
		return -1;
	    }
	    flag2 = (*(s + 1) >= '0' && *(s + 1) <= '9');
	    if (!flag2) {
		err = 11;
		printf("num is ilegal\n");
		return -1;
	    }
	    ++s;
	} else if (flag) {
	    sum = sum * 10 + c - '0';
	    isNumStart = true;
	    if (sum >= maxInt) {
		break;
	    }
	    isZeroStart = false;
	    ++s;
	} else {
	    err = 11;
	    printf("num is ilegal\n");
	    return -1;
	}
    }
    if (isPositive) {
	return sum;
    }
    return -sum;
}
int main(int argc, char *argv[])
{
    if (argc != 2) {
	printf("input num please\n");
	return -1;
    }
    char *str = argv[1];
    int num = str_to_int(str);
    if (err) {
	printf("parse str to num is err\n ");
	return -1;
    }
    printf("num = %d\n", num);
    return 0;
}
该程序支持+,-开头,允许000开头
字符串转化成int的更多相关文章
- ipv4的ip字符串转化为int型
		
要求: 将现有一个ipv4的ip字符串(仅包含数字,点,空格), 其中数字和点之间的空格(至多一个)是合法的,比如“12 .3. 4 .62”,其他情况均为非法地址.写一个函数将ipv4地址字符串转化 ...
 - C# 判断字符串是否是int/double
		
using System.Text.RegularExpressions; /// <summary> /// 判断字符串是否是int/double /// </summary> ...
 - js将json字符串转化成json对象的方法
		
js将json字符串转化成json对象的方法: JSON.parse(jsonObject)
 - 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 ...
 - iOS 16进制字符串转换成int十进制
		
NSRange rangeErr; rangeErr.location = 6; rangeErr.length = 2; NSString *strings = [value substringWi ...
 - java中字符串String 转 int(转)
		
java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...
 - C语言:将16进制字符串转化为int类型值
		
将16进制字符串值转换为 int 整型值 此例中用 "1de" 作为测试字符串,实现代码如下: #include <stdio.h> #include <stdl ...
 - 将逗号分隔 的字符串转化成List
		
将逗号分隔 的字符串转化成List List<String> parIdListTmp = new ArrayList<String>(); String parIdArray ...
 - 数组转集合、集合转数组、字符串数组与int型、long型数组等的转换
		
在项目中经常会遇到数组转集合.集合转数组.数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: String str[] = { ...
 
随机推荐
- Java后台解决跨域问题
			
首先说一下什么是跨域? JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.那什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.c ...
 - [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)
			
[FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...
 - css布局之居中
			
CSS布局之居中 本文主要是介绍水平居中,垂直居中,还有水平垂直居中的方法 水平居中 1.行内元素水平居中 使用text-align:center;就可以实现行内元素的水平居中,但是记得要在父元素中设 ...
 - mybatis嵌套map或者map嵌套的parameterType
			
Spring的重要注解 https://www.cnblogs.com/rolandlee/p/11014923.html 一:首先是map嵌套: 例1: 例2: 总结: paramterType无论 ...
 - Liunx软件安装之MySQL
			
一.安装MySQL 1.1 配置 yum 源 centos 默认没有 MySQL 的 yum 源,所以需要先配置 yum 源. 1) 前往 官网,选择对应系统版本 2) 右键复制链接 3) 在 cen ...
 - CENTOS服务器基础教程-U盘系统盘制作
			
什么都要用到一点点,会一点点,现在的USB3.0基本上服务器都已经支持.小编给大家介绍基础篇:如何使用U盘制作系统安装盘 工具/原料 U盘 UltraISO工具 方法/步骤 准备一个U ...
 - GCN和GCN在文本分类中应用
			
1.GCN的概念 传统CNN卷积可以处理图片等欧式结构的数据,却很难处理社交网络.信息网络等非欧式结构的数据.一般图片是由c个通道h行w列的矩阵组成的,结构非常规整.而社交网络.信息网络 ...
 - Sherlock之Instructions指令介绍(Sherlock Version: 7.2.5.1 64-bit)
			
指令集总览 1.General 1).Comment:: 注释指令. 2).Image Window: 创建新的图像窗口. True: 取像之后更新图像窗口显示:False: ...
 - codeforces C. Sonya and Problem Wihtout a Legend(dp or 思维)
			
题目链接:http://codeforces.com/contest/713/problem/C 题解:这题也算是挺经典的题目了,这里附上3种解法优化程度层层递进,还有这里a[i]-i<=a[i ...
 - Java集合中List、Set以及Map
			
概述: List , Set, Map都是接口:List , Set继承至Collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有 ...