Q:写一个函数getint(char str[]), 把输入的一串字符转换成整数。且str不符合数字要求时返回0,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
#include <stdio.h>
#include <string.h>
int isDigit(char ch)
{
if(ch >= '0' && ch <= '9')
return 1;
else
return 0;
}
int getInt(char str[])
{
int res = 0;
int len = strlen(str);
int sign = 1;
int i = 0;
if(len > 0 && str[0] == '+')
i = 1;
if(len > 0 && str[0] == '-')
{
i = 1;
sign = -1;
}
while(i < len)
{
if(isDigit(str[i]))
res = res * 10 + str[i++] - '0';
else
return 0;
}
return res*sign;
}
int main()
{
char s[105];
scanf("%s", s);
int ans = getInt(s);
printf("%d\n", ans);
return 0;
}
输入
复制
+2147483647 1a33
输出
复制
2147483647 0