码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 模拟实现atoi函数,将字符型转换成整型输出


    问题:

    1.单引号双引号混淆

    2.没有设定n值,判断的范围是*c的范围

    3.根本想不出n的表达式,括号范围也没给对

    4.c++写成n++

    5.没有强转

    1. #include
    2. #include
    3. //#include
    4. enum State
    5. {
    6. INVALUE, //0
    7. VALUE //1
    8. };
    9. State = INVALUE;//默认均为非法转换
    10. int my_atoi(const char* c)
    11. {
    12. int flag = 1;//判断正负号的转换标志
    13. // 1.NULL
    14. if (NULL == c)
    15. {
    16. return 0;
    17. }
    18. // 2.空白字符
    19. while (isspace(*c))
    20. {
    21. c++;
    22. }
    23. // 3."+/-"符号存在
    24. if (*c == '+')
    25. {
    26. flag = 1;
    27. c++;//往后移动
    28. }
    29. else if (*c == '-')//单引号才行,否则进不去循环
    30. {
    31. flag = -1;
    32. c++;
    33. }
    34. // 4.纯数字的字符转换
    35. long long n = 0;//以防初始值太小
    36. while (isdigit(*c))
    37. {
    38. n = n * 10 + (*c - '0') * flag;
    39. //(n * 10 + *c - '0') * flag会报错,由于括号的存在,会先计算n * 10 + *c,然后再减去'0'
    40. if (n <= INT_MIN || n >=INT_MAX)
    41. {
    42. return 0;
    43. }
    44. c++;
    45. }
    46. if (*c == '\0')
    47. {
    48. State = VALUE;
    49. return (int)n;
    50. }
    51. if (isalnum(*c))
    52. {
    53. State = INVALUE;
    54. return (int)n;
    55. }
    56. }
    57. int main()
    58. {
    59. const char* c = " +1234";//const在*左边:不改动内容
    60. int ret = my_atoi(c);
    61. if (ret == 0)
    62. {
    63. printf("非法转换:%d\n", ret);
    64. }
    65. else
    66. {
    67. printf("合法转换:%d\n", ret);
    68. }
    69. return 0;
    70. }

  • 相关阅读:
    常用傅里叶变换表
    【Linxu网络服务】LAMP架构
    无胁科技-TVD每日漏洞情报-2022-11-2
    【LeetCode】超级洗衣机 [H](贪心)
    vue-组件生命周期+网络请求
    高数总结(6
    TVS选型:瞬态抑制二极管选型!|深圳比创达EMC
    点赋科技:如何提高淘宝店铺的流量?
    【软件工程_UML—StartUML作图工具】startUML怎么画interface接口
    总是留不住客户怎么办?这三点每多做一点,回头客翻一倍!
  • 原文地址:https://blog.csdn.net/m0_62014223/article/details/133210027
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号