使用C语言写出以下函数,给你一个用字符串表示的整数,请写一个函数把该字符串转化成为整数,并要求处理异常情况。函数体中的语句不能超过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);
}
其他人的程序:
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);
}
同“练习小程序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);
}
其他人的程序:
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);
}
本文介绍了一种使用C语言将字符串转换为整数的方法,包括处理符号位和非法字符等特殊情况。提供了一个不超过五句核心代码的实现方案。

1381

被折叠的 条评论
为什么被折叠?



