zoukankan      html  css  js  c++  java
  • 编程算法

    把字符串转换为整数 代码(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 != '') {
    		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 == '') { g_nStatus = kValid; } return num; } int StrToInt(const char* str) { g_nStatus = kInvalid; long long num = 0; if (str != NULL && *str != '') { bool minus = false; if (*str == '+') str++; else if (*str == '-') { str++; minus = true; } if (*str != '') num = StrToIntCore(str, minus); } return (int)num; } int main(void) { char num[] = "-873141"; int result = StrToInt(num); printf("result = %d ", result); return 0; }


    输出:

    result = -873141
    








  • 相关阅读:
    My Tornado Particle Effect
    [zz] 海洋环境的光能传递
    一道算法题
    Alembic
    一些莫名其妙的东东
    Python Q&A
    <<Exceptional C++>> notes
    CG Rendering v.s. Browser Rendering
    Modo
    Katana
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6901067.html
Copyright © 2011-2022 走看看