题目:把一个字符串转换成整数
分析:这个题目不难,难点在于输入的判定,目标是,任何输入都有正确的转化值和返回值。
测试会出现的问题有;
1.空指针。返回值是0,status为0
2.区分空指针和“0”,通过设置全局变量来区分。 0的返回值是0 status是1
3.非法输入,除了正负号。返回值是0 status是1.
不要忘记askII 到数字还要减去‘0’
int status=0;
int strTointAll(char *pp,int minus);
int strTointAll(char *pp,int minus)
{
int num=0;
char *p=pp;
while (*p!='\0') {
if (*p>'9'|| *p<'0') {
status=1;
num=0;
break;
}
num=num*10+*p-'0';
p++;
}
if (minus==1) {
num=num*(-1);
}
return num;
}
int strToint(char *str)
{
char *p=str;
int num=0;
int minus=0;
if (p!=NULL && *p!='\0') {
if (*p=='+') {
p++;
}
if (*p=='-') {
p++;
minus=1;
}
if (*p!='\0') {
num=strTointAll(p, minus);
}
}
return num;
}