题目:
输入一个表示整数的字符串,把该字符串转换成整数并输出。
例如输入字符串"345",则输出整数345。
思路:
先判断该字符串是有符号正整数,还是有符号负整数,还是无符号正整数。
再遍历一遍字符串,与‘0’和‘9’比较得出结果。
代码:
bool StringToInt(char *str, long long *integer)
{
if(str == NULL)
{
return false;
}
//计算字符串长度
int len = strlen(str);
int tempInteger = 0;
//先对第一位字符进行判断是正整数还是负整数
if(str[0] == '+')//正整数
{
//有符号正整数,从第2个字符开始遍历字符串
for(int i = 1; i < len; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
tempInteger += (str[i]-'0')*pow(10., (len-1-i));
}else
{
break;
}
}
*integer = tempInteger;
}else if(str[0] == '-')//负整数
{
//有符号负整数,从第2个字符开始遍历字符串,最后将所得值乘以-1
for(int i = 1; i < len; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
tempInteger += (str[i]-'0')*pow(10., (len-1-i));
}else
{
break;
}
}
*integer = tempInteger*(-1);
}else if(str[0] >= '0' && str[0] <= '9')//正整数
{
//无符号正整数,从第1个字符开始遍历字符串
for(int i = 0; i < len; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
tempInteger += (str[i]-'0')*pow(10., (len-1-i));
}else
{
break;
}
}
*integer = tempInteger;
}
return true;
}