练习-字符串转数字

来源:互联网 发布:如何用dos运行java 编辑:程序博客网 时间:2024/04/29 13:39

上些时间到TX面试,被问到如何写一个字符串转为数字虽然,这是一个自己觉得也很简单的题目,但自己写程序比较少,手上功夫生了,感到很惭愧今天有空,自己被了一个,大家看看有没有什么写的不好,指出来吧。

#include <stdio.h>#include <stdlib.h>//by ljg 2014-8-1
//使用递归的方法把字符串转为数字int AtoI2(const char *str,int a,int *err){if(*str == 0){//printf("a is %d\n",a);return a;}else{if(*str > '9' || *str < '0'){//判断是否数字printf("err, str have letter\n");*err = 1;return 0;}int  b = a *10 +(*str - '0');printf("b is %d\n",b);if(b < a){//判断溢出printf("err , str is too long\n");*err = 1;return 0;}return   AtoI2(str+1,b,err);}}//先把负号找出来,再把字符串转为数字int AtoI(const char *str){int isNegative = 0;if(*str == '-'){isNegative = 1;str++;}int err = 0;int a = AtoI2(str,0,&err);if(err)a = 0;else if(isNegative){a = -a;}printf("string is %s, a is %d\n",str,a);return a;}int main(){const char *str = "2323423";int a = AtoI(str);printf("------------\n");const char *str2 = "223llkf234";int b = AtoI(str2);printf("-------------\n");const char *str3 = "2987908782758346537861847612384";int c = AtoI(str3);printf("---------------\n");const char *str4= "-234234098";int d = AtoI(str4);printf("d is %d\n",d);printf("@@@---------------\n");int e = 0x7fffffff;char buffer[30];sprintf(buffer,"%d",e);printf("buffer is %s\n",buffer);e = AtoI(buffer);}


0 0
原创粉丝点击