字符串转化成数字,c中有专门的函数aoti来实现,不使用aoti函数来实现的代码如下;还存在以下问题,1.当输入多个空白字符后在输入数字,就会有问题,在判断空白字符哪里加上循环,2.还有界限的问题,字符串可以输入很多,但int类型的取值范围是21474836482147483647[-2^312^31-1],还是有可能越界,3.如果输入的字符串是0,和我定义的错误返回值是一样的,就分辨不出来了
#include<stdio.h>
int reverstr (char* p);
void getchars(char* p,int l);
int main()
{
char strNumber[1000];
printf("please input number\n");
getchars(strNumber,1000);
int sum = reverstr(strNumber);
printf("%d\n",sum);
return 0;
}
void getchars(char* p,int l)
{
fgets(p,l,stdin);
int len=strlen(p);
if(*(p+len-1) == '\n')
{
*(p+len-1) = '\0';
}else
{
while(getchar() !='\0');
}
}
int reverstr (char* p)
{
if(p == NULL){return -1;}
if(isspace(*p)){p++;}
int flag=1,sum=0;
if(*p == '-')
{
flag=-1;
p++;
}
if(*p == '+' ){p++;}
while(*p !='\0')
{
if(*p>='0'&& *p<='9')
{
sum = sum*10 +(*p-'0');
}else{
return sum*flag;
}
p++;
}
return sum*flag;
}