欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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语言_字符串转数字的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。