字符串转化为数字
将给定字符串转化为数字,如果结果为正较大返回2147483647,如果结果为负且较大返回-2147483648。字符串除包含数字外还包含空格及其他字符,因此需要对不是数字的字符进行处理。[cpp]
#include <stdio.h>
int isspace(int x)
{
if(x == ' '|| x == '\t' || x == '\n' || x == '\f' || x == '\b' || x == '\r')
return 1;
else
return 0;
}
int isdigit(int x)
{
if(x <= '9' && x >= '0')
return 1;
else
return 0;
}
__int64 toInteger(char string[])
{
int c; /* current char */
__int64 total; /* current total */
int sign; /* if '-', then negative, otherwise positive */
/* skip whitespace */
while(isspace((int)(unsigned char)*string) )
++string;
c = (int)(unsigned char)*string++;
sign = c; /* save sign indication */
if(c == '-' || c == '+')
<span style="white-space:pre"> </span>c = (int)(unsigned char)*string++; /* skip sign */
total = 0;
while(isdigit(c))
{
total = 10 * total + (c - '0'); /* accumulate digit */
if(total >= 2147483647 && sign != '-')
{
total = 2147483647;
break;
}
else if(total >= 2147483648 && sign == '-')
{
total = 2147483648;
break;
}
c = (int)(unsigned char)*string++; /* get next char */
}
if(sign == '-')
return -total;
else
return total; /* return result, negated if necessary */
}
int main()
{
char string[100] = {0};
scanf("%s", &string);
printf("%I64d\n", toInteger(string));
return 0;
} www.zzzyk.com
测试用例:
100” output 100
“12343abc100” output 12343
“23424339999999999999” output 2147483647
“-100” output -100
“+50” output 50
“ 100” output 100
“12 20” output 12
补充:软件开发 , C++ ,