atoi函数实现的各种考虑因素

    xiaoxiao2026-01-09  12

    #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> //atoi实现:将一个字符串转换为对应的整数 enum Status //定义两个枚举常量判断所给变量是否合法 { kValid = 0, kInvalid }; int g_nStatus = kValid; //定义全局变量判断是否出现非法变量 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 = StrToInt(str,minus); //调用具体的转化函数 } } return (int)num; } long long StrToInt(const char * str,bool minus) //字符串转化为整数的具体实现过程 { long long num=0; while(*str != '\0') { int flag = minus ? -1 : 1; if((*str >= '0') && (*str <= '9')) { num = num * 10 + flag * (*str - '0'); //正常情况下的转换 if((!minus && num > 0x7FFFFFFF) || //考虑超出数的范围的情况 (minus && num < (signed int)0x80000000)) { num = 0; break; } str++; } else { num = 0; break; } } if(*str == '\0') { g_nStatus = kValid; } return num; }
    转载请注明原文地址: https://ju.6miu.com/read-1305812.html
    最新回复(0)