字符串转化成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[] = { ...
随机推荐
- django在启动时抛出Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试 解决办法
1.适用场景 在启动某个服务的时候,比如python中django启动的时候8000端口被占用,导致无法启动服务. 2.解决办法 通过命令行找出端口对应的PID进程 C:\Users\micha> ...
- 纯数据结构Java实现(4/11)(BST)
个人感觉,BST(二叉查找树)应该是众多常见树的爸爸,而不是弟弟,尽管相比较而言,它比较简单. 二叉树基础 理论定义,代码定义,满,完全等定义 不同于线性结构,树结构用于存储的话,通常操作效率更高.就 ...
- Greenplum数据库分享
1. 场景描述 最近做了次Greenplum数据库的分享,如下图,把第三章的的架构介绍简单提出来,分享下. 2. 解决方案 就按照ppt贴图了,部分内容稍微做了下马赛克. (这页ppt的下半部分,有实 ...
- MongoDB的一些高级语法.md
MongoDB的一些高级语法 AND 和 OR操作 AND操作 OR操作 嵌入式文档 插入 查询 数组(Array)字段 插入 查询 聚合(Aggregation) 筛选数据 修改字段 注意事项 ...
- Linux设备驱动程序学习----3.模块的编译和装载
模块的编译和装载 更多内容请参考Linux设备驱动程序学习----目录 1. 设置测试系统 第1步,要先从kernel.org的镜像网站上获取一个主线内核,并安装到自己的系统中,因为学习驱动程序的编写 ...
- Spring Boot 默认指标从哪来?
了解有关 Spring Boot 默认指标及其来源的更多信息. 您是否注意到 Spring Boot 和 Micrometer 为您的应用生成的所有默认指标? 如果没有 - 您可以将 actuator ...
- cocos creator 事件
cocos creator 事件 在做一个消除类游戏时,需要对点击的方块做出响应.代码很简单,可背后的原理还多着呢. 1. 普通节点注册click事件 在cc中如果需要相应click事件,需要为该节点 ...
- CTPN
1. https://zhuanlan.zhihu.com/p/34757009 (原理) 2. https://www.jianshu.com/p/471bdbd0170d (bi-LSTM)
- Redis学习总结(八)--Redis云平台
在实际生产环境中通过命令行的形式去进行集群的管理是一件很繁琐并且容易出现错误的事情,所以就引入了云平台的概念. 什么是云平台 Redis 云平台是指通过 BS 等架构实现对 Redis 的管理和监控. ...
- python 24 封装、多态
目录 1. 封装.多态 2. 鸭子类型--Duck typing 3. 类的约束 5. super深度剖析 1. 封装.多态 封装:将代码.数据放入一个容器空间中,并且可以使用. 多态:一个事物可以呈 ...