字符串转化成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[] = { ...
随机推荐
- SpringMVC源码分析6:SpringMVC的视图解析原理
title: SpringMVC源码分析6:SpringMVC的视图解析原理 date: 2018-06-07 11:03:19 tags: - SpringMVC categories: - 后端 ...
- 从0开始学Git——Git的常见操作
Git常用命令 创建Git版本库 git init [目录]#创建目录版本库, 不写的话是当前目录 该命令会在目录中创建一个名为.git的隐藏目录 文件提交 添加文件: git add 文件名 #添加 ...
- Java虚拟机一看就懂01
Jvm内存结构 --- 线程隔离区域说明: 1.1.程序计数器 线程私有 是一块内存空间 唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?) 1.2.Java虚拟机栈 线程私 ...
- MySql基础架构以及SQL语句执行流程
01. mysql基础架构 SQL语句是如何执行的 学习一下mysql的基础架构,从一条sql语句是如何执行的来学习. 一般我们写一条查询语句类似下面这样: select user,password ...
- AI资源对接需求汇总:第3期
更好的阅读体验,请查看首发原文链接:AI资源对接需求汇总:第3期 平台介绍 平台由人工智能领域几个知名原创公众号发起,总读者约25万. 主要面向人工智能领域的从业者,涵盖图像处理.三维计算机视觉.机器 ...
- Python -二叉树 创建与遍历算法(很详细)
树表示由边连接的节点.它是一个非线性的数据结构.它具有以下特性. 一个节点被标记为根节点. 除根节点之外的每个节点都与一个父节点关联. 每个节点可以有一个arbiatry编号的chid节点. 我们使用 ...
- unity shader 纹理&透明效果
1.纹理映射基础 (1)纹理映射通过(u,v)坐标实现.注意:这句话时博主当时面试一家外企被问到的问题. (2)添加纹理属性:——MainTex("Main Tex",2D)=&q ...
- 《高效休息法》IT从业者如何高效休息
这本书主要讲什么? 大脑疲劳和身体疲劳不同,身体再怎么休息,大脑疲劳还是会在不知不觉中积累 大脑是一个重量仅仅占体重2%,却消耗着20%能量的大胃王,这些能量大部分都用在了预设模式网络(Default ...
- 舍得 (学习html几天)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【selenium】- 自动化测试必备工具FireBug&FirePath
本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. FireBug FireBug的安装: 如果使用Firefox浏览器的话,推荐使用较低版本,比如27-32.否则会报错. 点击右上角的菜 ...