当前位置:
首页 >
C语言_字符串转数字
发布时间:2023/12/31
44
豆豆
生活随笔
收集整理的这篇文章主要介绍了
C语言_字符串转数字
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
C语言_字符串转数字
程序实现基础算法与思想:
‘1‘ - ’0‘ —> 1;(字符1减字符0得到数字1)
’2‘ - ’0‘ —> 2;
----
‘9’ - ‘0’ —> 9;
*即:数字字符 - ’0‘ —> 对应的数字
( 注意:只能得到1~9,’10‘ - ’0‘无法得到10。)
测试用例:
int main() {int a='1'-'0';//int a=‘2’-‘0’;//...printf("%d\n",a);return 0; }结果:
函数实现:
实现思想:逐个转换字符,将数字逐个“叠加”,最终得到所需数字。
例如字符串“143562”,
_____先将字符‘1’转换成数字1,存入变量tmp(此时tmp=1);
_____再将字符’4’转换成数字4,存入变量tmp(此时tmp=tmp✖10+4=14);
_____再将字符’3’转换成数字3,存入变量tmp(此时tmp=tmp✖10+3=143);
…
以此类推得到tmp=143562;
基本代码实现:
int Myatoi(const char *str) {assert(str != NULL);//判空断言,与函数实现无关if(str==NULL)return 0;int tmp=0;while(*str !='\0'){tmp=tmp*10+(*str -'0');//获得数字并“叠加”str++;}return tmp; }int main() {char str1[10]="123456";//测试用例char str2[10]="";printf("%d\n",Myatoi(str1));printf("%d\n",Myatoi(str2));return 0; }测试结果:
类推其他相关代码实现:
函数1(将字符串中所有数字提取并输出,例如“12ab12a”->1212)
int Myatoi(const char *str) {assert(str != NULL);//判空断言,与函数实现无关if(str==NULL)return 0;int tmp=0;while(*str !='\0'){if(*str>'0' && *str<='9')//if(isdigit(*str)) 推荐使用函数isdigit,检查字符是否为字符‘0’~~‘9’{tmp=tmp*10+(*str -'0');//获得数字并“叠加”}str++;//指针后移}return tmp; }测试:
int main () {char str1[]="123456";char str2[]="0";char str3[]="abd123";char str4[]="123abc123";char str5[]="abc";printf("%d\n",Myatoi(str1));printf("%d\n",Myatoi(str2));printf("%d\n",Myatoi(str3));printf("%d\n",Myatoi(str4));printf("%d\n",Myatoi(str5));return 0; }测试结果
函数2(遇其他字符直接结束,例如:“123”->123,“123a4”->123,“abc123”->0):
int Myatoi(const char *str) {assert(str != NULL);//判空断言,与函数实现无关if(str==NULL)return 0;int tmp=0;while(*str>'0' && *str<='9')//while(isdigit(*str))//推荐使用函数isdigit,检查字符是否为字符‘0’~~‘9’{tmp=tmp*10+(*str -'0');//获得数字并“叠加”str++;//指针后移}return tmp; }测试:
int main () {char str1[]="123456";char str2[10];char str3[]="0";char str4[]="abd123";char str5[]="123abc123";printf("%d\n",Myatoi(str1));printf("%d\n",Myatoi(str2));printf("%d\n",Myatoi(str3));printf("%d\n",Myatoi(str4));printf("%d\n",Myatoi(str5));return 0; }测试结果:
总结
以上是生活随笔为你收集整理的C语言_字符串转数字的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 爬虫或日常使用过程中解决ip被封锁IP限
- 下一篇: 【转】斐讯K2刷华硕固件教程