首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >atoi函数的讲解和模拟实现

atoi函数的讲解和模拟实现

作者头像
用户11379153
发布2025-11-05 15:12:03
发布2025-11-05 15:12:03
520
举报

一.atoi函数介绍

简单来讲,就是将一个字符串中的数字字符变为整数。

二.一些特殊点

1.字符串内含有字母

#include<stdio.h> #include<stdlib.h> int main() {     char a[]="123412";     int ret=atoi(a);     printf("%d",ret);     return 0; }

例如一个字符串ch="a1234",那么atoi第一次检索时没有直接遇到数字,而是遇到了字母,那么就会返回0,如图。

2.字符串内含有空格

atoi会跳过前面的空格,直至检索到数字。如果该字符串全部都是空格,那么就会返回0。

如果字符串数字和数字之间存在空格,那么不会继续检索。

3.字符串内含有正负号

atoi会自动识别正负号,并在输出的数字前面加上正负号。

但如果是在数字之后的正负号,那么就会与数字后遇到字母,空格同理,停止继续检索。

三.atoi函数模拟实现

在编写时,我们需要注意以下几点:1,开头遇到空格应往后继续跳过,直到遇到数字;2,如果碰到字母应直接返回0;3,应检查atoi转换后的数字是否还在int表示范围内。

代码如下

#include<stdio.h> #include<string.h> #include<ctype.h> #include<limits.h>

int myatoi(char* p) {     if (*p == '\0')//判断是否为空指针     {         return 0;     }     while (isspace(*p))     {         p++;     }//判断空格

    int flag = 1;     long m = 0;     if (*p == '+')     {         flag = 1;         p++;     }     else if (*p == '-')     {         flag = -1;         p++;     }//判断正负号

    while (*p != '\0')     {

        if (*p >= '0' &&*p <= '9')         {             m = m * 10 + flag * (*p - '0');         }//对数据进行转换         else         {             break;  //你不是数字是不是就要break,离开循环         }         if (m< INT_MIN || m > INT_MAX)//判断是否超出int表示范围             break;         p++;     }     return m; } int main() {     char a[1000];     fgets(a, 1000, stdin);//输入字符串     int len = strlen(a);     a[len - 1] = '\0';//计算字符串长度并在末尾加上斜杠0,因为我在这里是以字符数组的方式定义的

    int m = myatoi(a);     printf("%d", m);     return 0; }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.atoi函数介绍
  • 简单来讲,就是将一个字符串中的数字字符变为整数。
  • 二.一些特殊点
    • 1.字符串内含有字母
    • 2.字符串内含有空格
    • 3.字符串内含有正负号
  • 三.atoi函数模拟实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档