持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
🚩write in front🚩
🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP创作者~周榜91﹣总榜823⇿全网访问量35w+🏅
🆔本文由 謓泽 发布到掘金(JueJin) 如需转载还请通知⚠
📝个人主页-謓泽 的个人主页 - 文章 - 掘金 (juejin.cn)📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏-【C语言】Topic - 謓泽的专栏 - 掘金 (juejin.cn)🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
★第六十二题→自定义实现 atoi() 函数★
题解详情如下所示👇
每日名言:世界总是一样的,只是我们的心情和遭遇不一样而已。
⒈题目的本质。说明⇢输入一个字符串的数字,注-类型是字符类型[char]
输出一个整数值的数字,注-类型是整形类型[int]
⒉这道题目就是上一个小题,只不过需要我们自定义去实现它的功能。
说明⇢那么它的难度就会稍微的增大那么点,不过我们只需要理解atoi这个函数怎么去使用+上自己的一些思路就可以了。
⒊如果你在做这道题目实在没有想到什么思路的话,推荐你使用"代入法"解决。
拓展知识点⇢ ‘\0’和‘0’
㈠共同点-都是字符。
㈡不同点
①'\0'对应的ASCll码是0,是ASCII码表中的第一个字符,即空字符;判断一个字符串是否结束的标志就是看是否遇到‘\0’。
②‘0’对应的ASCII码是48,48对应的十六进制数就是0x30。
int atoi (const char * str);
㈠这个函数的主要作用实际上就是把这个字符串转换为整数。
㈡解析C语言的字符串,将其内容解释为整数,返回为int类型的值。函数首先根据需要丢弃尽可能多的空白字符(如isspace中的),直到找到第一个非空白字符。然后,从这个字符开始,取一个可选的初始加号或减号,后面跟着尽可能多的以10为基数的数字,并将其解释为数值。
㈢该字符串可以在构成整数的字符之后包含额外的字符,这些字符将被忽略,对该函数的行为没有影响。
示例代码如下👇
#pragma warning(disable:6031)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
int x;
int my_atoi(const char nptr[])
{
assert(nptr != NULL);
while (*nptr != '\0')
{
x = (*nptr - '0') + x * 10;//'0':ASCll码相当于48
nptr++;
}
return x;
}
int main(void)
{
printf("请输入数字字符串:");
char arr[20] = { 0 };
scanf("%s", arr);
printf("\n转换结果输出整形:%d\n", my_atoi(arr));
return 0;
}
运行结果🖊
请输入数字字符串:1234
转换结果输出整型:1234
最后END:贵在坚持!