/**********************************************************************
题目:写一个函数StrToInt,实现把字符串转换成整数的功能,类似atoi函数
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
long long StrToIntCore(const char* str, bool minus);
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') //处理+-,之后的为'\0'的情形
{
num = StrToIntCore(str, minus);
}
}
return (int)num;
}
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;
}
// ====================测试代码====================
void Test(char* string)
{
int result = StrToInt(string);
if(result == 0 && g_nStatus == kInvalid)
printf("the input %s is invalid.\n", string);
else
printf("number for %s is: %d.\n", string, result);
}
int main()
{
Test(NULL);
Test("");
Test("123");
Test("+123");
Test("-123");
Test("1a33");
Test("+0");
Test("-0");
//有效的最大正整数, 0x7FFFFFFF
Test("+2147483647");
Test("-2147483647");
Test("+2147483648");
//有效的最小负整数, 0x80000000
Test("-2147483648");
Test("+2147483649");
Test("-2147483649");
Test("+");
Test("-");
return 0;
}
==参考剑指offer
分享到:
相关推荐
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
# 请你来实现一个 atoi 函数,使其能将字符串转换成整数 # 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止 # 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
字符串转换整数 使用c#实现MyStoi函数,用于将字符串转换为整数
把字符串转换成整数.md
编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,代码
题目链接:把字符串转换成整数题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0
javascript将16进制的字符串转换为10进制整数hex.docx
67. 把字符串转换成整数题目链接题目描述将一个字符串转换成一个整数,字符串不是一个合法的数值则返回 0,要求不能使用字符串转换整数的库函数。if (c < '
在C#中,将16进制字符串转换成十进制数值
任意字符串和整数之间实现转化的过程,有完整的逻辑思路,仅供参考
本文实例讲述了C++实现十六进制字符串转换为十进制整数的方法。分享给大家供大家参考。具体实现方法如下: /* * 将十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值 */ #include #include...
主要介绍了JavaScript将字符串转换为整数的方法,涉及javascript中parseInt函数的使用技巧,非常具有实用价值,需要的朋友可以参考下
本文档介绍了几种从字符串中提取连续的字符数字转换为整数的方法,附有源代码供参考,适合于那些想要编码实现字符串中提取连续的字符数字转换为整数的同学
C语言字符串转化成整数代码代码,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
这是一个进制转换的vc源码,将在字符串中16进制表示的数转换为10进制的整数
由键盘输入两个字符串 “12”和 “24”,将它们转换成整数,然后计算并输出这两个数的和。
字符串转换整数.md
实现 字符串,整型数据,字符型数组互相转换源码
注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。如果数示例 1:输入: "42"输出:
C#面试题字符串转换整数