使用C语言写出以下函数,给你一个用字符串表示的整数,请写一个函数把该字符串转化成为整数,并要求处理异常情况。函数体中的语句不能超过5句。
同“练习小程序1”,原帖地址:
http://bbs.chinaunix.net/viewthread.php?tid=883665&extra=page%3D1%26filter%3Ddigest
题目不难,关键是 “ 函数体中的语句不能超过5句”
远远超过5句的我的代码:
其他人的程序:
同“练习小程序1”,原帖地址:
http://bbs.chinaunix.net/viewthread.php?tid=883665&extra=page%3D1%26filter%3Ddigest
题目不难,关键是 “ 函数体中的语句不能超过5句”
远远超过5句的我的代码:
#include
<
stdio.h
>
char instr[] = " 52368 " ;
int str2int( char * str)
{
int sybom=1;
int ret = 0;
if(*str==NULL)
{
printf("error!" );
return -1;
}
if(*str=='-'){
str++;
sybom=-1;
}
else{
while(*str!=''){
if(*str>'9'||*str<'0'){ //error handling
printf("error! ");
return -1;
}
ret = ret*10 + *str -'0';
str++;
}
}
ret = ret * sybom;
return ret;
}
void main()
{
int tst = str2int(instr);
printf("%d ",tst);
}
char instr[] = " 52368 " ;
int str2int( char * str)
{
int sybom=1;
int ret = 0;
if(*str==NULL)
{
printf("error!" );
return -1;
}
if(*str=='-'){
str++;
sybom=-1;
}
else{
while(*str!=''){
if(*str>'9'||*str<'0'){ //error handling
printf("error! ");
return -1;
}
ret = ret*10 + *str -'0';
str++;
}
}
ret = ret * sybom;
return ret;
}
void main()
{
int tst = str2int(instr);
printf("%d ",tst);
}
其他人的程序:
long
strtol(
const
char
*
ptr)
{
long len,res,val=1;
for(len=strlen(ptr);len--&&ptr[len]>='0'&&ptr[len]<='9';val*=10)
res+=val*(ptr[len]-'0');
return (len>0)?(-1):(res);
}
{
long len,res,val=1;
for(len=strlen(ptr);len--&&ptr[len]>='0'&&ptr[len]<='9';val*=10)
res+=val*(ptr[len]-'0');
return (len>0)?(-1):(res);
}