【C语言】重要函数atoi的使用

这篇具有很好参考价值的文章主要介绍了【C语言】重要函数atoi的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

         一、atoi函数的介绍

         二、atoi函数的使用

         三、atoi函数的模拟实现


一、atoi函数的介绍

一个专门将字符串转换为整数的库函数,具体用法如下:

【C语言】重要函数atoi的使用

字符串str,将其内容转化为整数,该整数作为int值返回。

二、atoi函数的使用

atoi函数的使用是非常简单的,如下:

int main()
{
	int ret = atoi("   -123");
	printf("%d\n", ret);
	return 0;
}

运行如下:

【C语言】重要函数atoi的使用 

三、atoi函数的模拟实现

重要板块:模拟实现需要我们将所有可能出现的情况列举出来,才能够完美的模拟实现出atoi库函数,情况如下:

字符串 合法性
“” 非法
“NULL” 非法
“    123” 合法
“123abc” 非法
“-123” 合法
“11111111111111111” 非法

1、字符串可以在构成整数的字符之后包含其他字符,这些字符将被忽略,并且对该函数的行为没有影响。

例如:123abc转换成123,字符被忽略,这种情况属于异常情况。

 2、该函数可以跳过多余的空白字符,直到找到第一个非空白字符。然后,从这个字符开始,取一个可选的初始加号或减号,后面跟着尽可能多的数字,并将它们转化为整数值。

例如:-123转换成-123。这种情况属于合法情况。

3、如果字符串的第一个非空白字符序列不是有效的整数,或者是字符串为空或只包含空白字符,则不执行转换。这种情况属于非法转换。

4、最后一种的转化情况之所以是非法转换,是因为整数值的大小是有限制的,太大的话,会出现越界,所以返回值有可能为随机值。

模拟实现atoi库函数的代码如下:

#include <limits.h>
#include <ctype.h>
//设置两种状态,分别代表字符转换的合法性
enum Status
{
	VALID,//合法
	INVALID//异常
};
enum Status status = INVALID;
int my_atoi(const char* str)
{
	if (str == NULL)
	{
		return 0;
	}
	if (*str == '\0')
	{
		return 0;
	}
	//处理空白字符
	while (isspace(*str))//如果前面有空格,跳过空格往后寻找符号或数字
	{
		str++;
	}
	int flag = 0;
	if (*str == '+')
	{
		flag = 1;
		str++;
	}
	else if (*str == '-')
	{
		flag = -1;
		str++;
	}
	//处理数字字符
	//-123
	long long ret = 0;
	while (isdigit(*str))
	{
		ret = ret * 10 + flag*(*str - '0');
		if (ret<INT_MIN || ret > INT_MAX)//需要判断数字是否越界
		{
			return 0;
		}
		str++;
	}
	if (*str == '\0')
	{
		status = VALID;
		return (int)ret;
	}
	else
	{
		return (int)ret;
	}
}
int main()
{
	int ret = my_atoi("     -123");
	if(status == VALID)
		printf("合法的转换:%d\n", ret);
	else
		printf("非法的转换:%d\n", ret);
	return 0;
}

本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

【C语言】重要函数atoi的使用文章来源地址https://www.toymoban.com/news/detail-400959.html

  老铁们,记着点赞加关注哦!!!  

到了这里,关于【C语言】重要函数atoi的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】C语言 atoi 函数解析

      🧑‍🎓 个人主页:简 料   🏆 所属专栏: C语言   🏆 个人社区:越努力越幸运社区   🏆 简       介: 简料简料,简单有料~在校大学生一枚,专注C/C++/GO的干货分享,立志成为您的好帮手 ~ C/C++学习路线 (点击解锁)(●’◡’●) ❤️ C语言 ❤️ 初阶数据结构与算法

    2024年02月07日
    浏览(35)
  • 【初阶C语言3】特别详细地介绍函数以及在初阶中重要的算法——递归

     💓作者简介: 加油,旭杏,目前大二,正在学习 C++ , 数据结构 等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏👀 🚚代码仓库:旭日东升 1👀 🌹欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖        从标题也能看出来,我们有要进行 超详细

    2024年02月08日
    浏览(32)
  • C语言第七课----------函数的定义及使用--------C语言重要一笔

                                                      个人主页::小小页面                  gitee页面:秦大大                 一个爱分享的小博主 欢迎小可爱们前来借鉴 __________________________________________________________          1.函数是什么   

    2024年02月16日
    浏览(26)
  • 【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现

    🔍个人主页 : @啊森要自信的主页 ✏️ 真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝希望看完我的文章对你有小小的帮助,如有错误,可以指出,让我们一起探讨学习交流,一起加油鸭。 本小节我们将学习字符分类函数,字符

    2024年02月04日
    浏览(41)
  • C语言sort()函数的使用 详细介绍

    qsort()函数(quick sort)是快速排序算法,可以排序任意数据类型的数组其中就包括整形,浮点型,字符串甚至自定义的结构体类型。 下图是4个参数的含义 我们要排序一个数组,首先要知道从哪儿开始排序,所以先把首元素地址传给qsort函数。  我们还要知道数组从哪里结束,但

    2024年02月05日
    浏览(34)
  • 模拟实现atoi函数

    请记住那些对你好的人,因为他们本可以不这么做  文章目录 atoi函数介绍  模拟实现   大家好,我是纪宁。   atoi函数,它的功能是将数字字符转化为数字。我第一次见这个函数还是在大一上在刷蓝桥杯的时候,有一个关于回文数字的题,要解决将字符转化为数字的问题。

    2024年02月16日
    浏览(28)
  • atoi函数及模拟实现

    ✅博客主页:爆打维c-CSDN博客​​​​​​  🐾 🔹分享c语言知识及代码  文章目录 一、atoi函数的简要介绍 1.函数原型 二、atoi函数的使用示例 💠正数示例: 💠负数示例: 💠带有符号示例: 💠无效输入示例: 三、模拟实现atoi 1.思路 2.实现代码 总结: ▪️ atoi(ascii to in

    2024年03月20日
    浏览(36)
  • C 库函数 - atoi()

    C 库函数  int atoi(const char *str)  把参数  str  所指向的字符串转换为一个整数(类型为 int 型)。 结果

    2024年02月11日
    浏览(32)
  • atof()、atoi()、atol()函数【详解】

    本期介绍🍖 主要介绍:atof()、atoi()、atol()函数是如何使用的,分别有那些功能,以及在使用时一些值得注意的点。👀    C语言提供了一些可以将数字字符串转换成数字的一些库函数,例如atof()、atoi()、atol()函数。下面分别介绍这些函数的功能: atof()函数 :将字符串转换

    2024年02月06日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包