把字符串转换为整数 代码(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. Android开发中的日期格式化

    下面的转换符来自Java,但是在android中同样可用.(以下表格内容来自互联网.) 常见日期格式化转换符 转换符 说 明 示 例 %te  一个月中的某一天(1-31)  2 %tb  指定语言环 ...

  2. 【贪心】小Y的炮[cannon]题解

    模拟赛的题目,做的时候由于第二题表打太久了,只剩下40分钟,想都没想就写了一个爆搜20分... 这道题单调性很关键,下面会解释 P.S.解释在代码里 #include<cstdio> #i ...

  3. 2-bitmap

    在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数. 思路: bitmap用一个bit来代表存在还是不存在,现在我们要判断重不重复,则需要三个状态:不存在,存在一个,存在多个.2b ...

  4. C - Domino piling

    Problem description You are given a rectangular board of M × N squares. Also you are given an unlimi ...

  5. C - Tram

    Problem description Linear Kingdom has exactly one tram line. It has n stops, numbered from 1 to n i ...

  6. nodejs __dirname 与 process.cwd()的区别

    var cwd = process.cwd(); console.log(cwd); console.log(__dirname); 1 2 3 cwd() 是当前执行node命令时候的文件夹地址 _ ...

  7. 使用TortoiseSVN碰到的几个问题(1)-导入,提交,更新

    1)导入数据到版本库 第一种情况,使用Import导入命令的时候 不能选择包含哪些指定文件或目录, 导入的文件夹不能变成工作副本,(如果你在“工作副本”目录下执行导入命令是不起作用的.)必须通过签出操 ...

  8. Asp.net MVC4 Step by Step (1)-路由,控制器,视图

    注意:此文需要你有一定Asp.net MVC的基础,很多东西省略了,只是做个提要笔记形式. 要创建一个ASP.NET MVC的Web应用,首先要去下载ASP.NET MVC框架, 可以访问ASP.NE ...

  9. Android 复制文本内容到系统剪贴板(自由复制)

    直接上代码:(对应的类:android.content.ClipboardManager) //获取剪贴板管理器: ClipboardManager cm = (ClipboardManager) g ...

  10. Interrupt中断线程

    package com.wistron.swpc.ecs.util; public class WrongWayStopThread extends Thread{ public static voi ...