把字符串转换为整数 代码(C)

本文地址: http://blog.csdn.net/caroline_wendy

题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数.

须要考虑异常处理, 正负数, 还有Int的最大值(0x7FFFFFFF)和最小值(0x80000000)等情况.

代码:

/*
* main.cpp
*
* Created on: 2014.7.12
* Author: spike
*/ #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> enum Status {kValid=0, kInvalid}; int g_nStatus = kValid; long long StrToIntCore(const char* digit, bool minus) {
long long num = 0;
while (*digit != '\0') {
if (*digit >= '0' && *digit <= '9') {
int flag = minus ? -1 : 1;
num = num*10 + flag*(*digit-'0');
if ((!minus && num>0x7FFFFFFF) || (minus && num <(signed int)0x80000000)) {
num = 0;
break;
}
digit++;
} else {
num = 0;
break;
}
}
if (*digit == '\0') {
g_nStatus = kValid;
}
return num;
} int StrToInt(const char* str) {
g_nStatus = kInvalid;
long long num = 0;
if (str != NULL && *str != '\0') {
bool minus = false;
if (*str == '+')
str++;
else if (*str == '-') {
str++;
minus = true;
} if (*str != '\0')
num = StrToIntCore(str, minus);
} return (int)num;
} int main(void)
{
char num[] = "-873141";
int result = StrToInt(num);
printf("result = %d\n", result);
return 0;
}

输出:

result = -873141

编程算法 - 把字符串转换为整数 代码(C)的更多相关文章

  1. 字符串转换为整数”123“-&gt;123

    字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给 ...

  2. (剑指Offer)面试题49:把字符串转换为整数

    题目: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 思路: 考虑+.-.空格.非数字字符,以及溢出问题 代码: #include <iostream> using n ...

  3. atoi函数——将字符串转换为整数

    atoi在一个叫<cstdlib>的库里,可以把字符串直接转换为整数,贼强势. 还有一个atof,就是换成浮点数,实质上是一样的. 例子: #include<cstdlib> ...

  4. c程序十六进制字符串转换为整数与反转

    字符串转整数使用sscanf ; char *buf = "1d5ce"; sscanf (buf, "%x", &value); printf (&q ...

  5. 剑指offer 67. 字符串转换为整数(Leetcode 8. String to Integer (atoi))

    题目:剑指offer 67题 需要考虑的情况:空指针.nullptr.空字符串"".正负号.数值溢出.在写代码的时候对这些特殊的输入都定义好合理的输出.可以定义一个全局布尔型变量g ...

  6. PHP算法之字符串转换整数 (atoi)

    请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...

  7. 编程算法 - 不用加减乘除做加法 代码(C)

    不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四 ...

  8. 编程算法 - 最小的k个数 代码(C)

    最小的k个数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用高速排序(Quick Sort)的方法 ...

  9. 编程算法 - 篱笆修理(Fence Repair) 代码(C)

    篱笆修理(Fence Repair) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 把一块木板切成N块, 每次切两块, 分割的开销是木板长度, ...

随机推荐

  1. WPF TextBox 仅允许输入数字

    因为在 IValueConverter 实现中,当文本不能转换为目标类型时返回 DependencyProperty.UnsetValue ,Validation.GetHasError 返回 tru ...

  2. 5.7 Maven通俗讲解

    好的东西只适合ctry+c+v 原文地址:https://blog.csdn.net/shuzhe66/article/details/45009175 Maven通俗讲解 也许是本人不才,初识Mav ...

  3. 子线程更新UI

    https://www.cnblogs.com/joy99/p/6121280.html

  4. 【SQL】ROWNUM和ROWID

    一.ROWNUM ROWNUM伪列是Oracle先查到结果集之后再加上去的一个伪列,这个伪列对符合条件的结果添加一个从1开始的序列号,并且序列号是从1开始增序排列的. SQL> select r ...

  5. Oracle数据库基础知识总结(一)

    数据库名.实例名.数据库域名.全局数据库名.服务名,这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水. 我们现在就来把它们弄个明白. 一.数据库名 什么是数据 ...

  6. 关于OpenCV的Mat画图问题

    由于OpenCV的java版本画图有太多错误,只能自己编写画图的代码,在一个函数中,编写出画圆和深度距离的代码, 代码如下: public int CircleMyMat(Mat Show, Poin ...

  7. java中为什么不允许类多重继承,却允许接口多重继承

    首先看下面这一段代码:(底下有热心网友更正,jdk1.8之后情况确实有点变化,等改天有空继续更) interface a{ void b();}interface a1 extends a{ void ...

  8. PHP并发IO编程实践

    PHP相关扩展 Stream:PHP内核提供的socket封装 Sockets:对底层Socket API的封装 Libevent:对libevent库的封装 Event:基于Libevent更高级的 ...

  9. 后台导出大量数据超时报 nginx404错误

    使用nginx服务器如果遇到timeou情况时可以如下设置参数,使用fastcgi:    fastcgi_connect_timeout 75;  链接          fastcgi_read_ ...

  10. HDU 2268 How To Use The Car (数学题)

    题目 //做起来很艰辛,总结起来很简单... //注意步行速度可能比车的速度快.... //推公式要仔细,,,, //一道对我来说很搞脑子的数学题,,,,, //车先送第一个人上路,第二个人步行:中途 ...