练习-字符串转数字
来源:互联网 发布:如何用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
- 练习-字符串转数字
- 基本功练习_2_24_3之字符串转数字
- 从字符串转数字
- js字符串转数字
- javascript 字符串转数字
- CString 字符串 转数字
- 字符串转数字
- 罗马字符串转数字
- java字符串转数字
- 字符串转数字
- 字符串如何转数字
- C++ 字符串转数字
- 字符串转数字
- 字符串转数字
- C 字符串转数字
- 字符串转数字
- 字符串转数字
- 字符串转数字
- C#综合揭秘——通过修改注册表建立Windows自定义协议
- ny 550 三位数逆序输出
- HDU2191_悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(背包/多重背包)
- POJ 1155 TELE (树状DP)
- LeetCode刷题笔录Path Sum II
- 练习-字符串转数字
- 一分钟让你彻底清楚Android四大启动模式
- HDOJ 题目2602 Bone Collector(动态规划,01背包)
- hdu3118Arbiter (利用二分图的定义,枚举每种状态)
- POJ2001_Shortest Prefixes(字典树)
- 【大数模板+十进制+for_loop】Multiply Strings
- apn生成信鸽服务端推送需要使用的pem
- java基础知识之内部类
- 目前最完整的Linux常用基础命令