C语言-atoi函数的使用和实现

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

atoi是C语言中常见的函数。大家可能对于他不太熟悉,其主要还是因为学校可能没有讲到。其实有很多函数像atol、atof都是一样的,本篇文章以atoi为例,剩余大家如果感兴趣可以再去了解。

目录

1.函数介绍

2.代码演示

3.atoi函数的模拟实现

4.扩展


1.函数介绍

int atoi (const char * str);

功能:

1.解析字符串的内容,将字符串转化成整数

2.atoi的使用需要包含头文件<stdlib.h>

参数:

str:指针,指向了待转化的字符串

返回值:

转化成功的话,返回转化得到的整数,如果是空字符串或者是跳过空白字符后第一个不是数字字符将返回0,如果转化得到数字超出int的取值范围,则是未定义的行为。

2.代码演示

#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("%d\n", atoi(" "));
	printf("%d\n", atoi("	abc"));
	printf("%d\n", atoi("123"));
	printf("%d\n", atoi("		123"));
	printf("%d\n", atoi("		+123"));
	printf("%d\n", atoi("		-123"));
	printf("%d\n", atoi("		-123abc"));
	printf("%d\n", atoi("111111111111111111111111111"));//行为未定义

	return 0;
}

输出结果:VS2022

0
0
123
123
123
-123
-123
2147483647

3.atoi函数的模拟实现

atoi函数的模拟实现可能有些复杂,但一定要理清思路:要先跳过空白字符,再看有无+-,如果有还需考虑最后的符号,用flag记录;同时ret值不能大于最大,也不能小于最小。

int my_atoi(const char* str)
{
	//跳过空白字符
	while (isspace(*str))
		str++;
	//判断正负符号
	int flag = 1;
	if (*str == '+')
	{
		str++;
	}
	else if (*str == '-')
	{
		flag = -1;
		str++;
	}
	//用ret记录值
	long ret = 0;
	while (*str != '\0')
	{
		//判断是否是数字字符
		if (isdigit(*str))
		{
			//转化为整型,如'1'-'0'=1
			ret = ret * 10 + (*str - '0') * flag;
			//最大只能INT_MAX,最小只能INT_MIN
			if (ret > INT_MAX)
			{
				ret = INT_MAX;
			}
			else if (ret < INT_MIN)
			{
				ret = INT_MIN;
			}
		}
		else
			return (int)ret;
		str++;
	}
	return (int)ret;
}

4.扩展

其实还有两个函数可以了解一下:

1.atol:将字符串转换成long类型,转换的范围是比atoi要更大一些。

2.strtol:将字符串转换成long类型,这个函数更加复杂,可以按照各种进制转换。

可以扩展学习一下。文章来源地址https://www.toymoban.com/news/detail-857249.html

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

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

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

相关文章

  • C语言atoi函数详解

    atoi是C/C++语言中一个常用的字符串转整数的函数,其原型定义在stdlib.h头文件中。它的作用是将一个字符串表示的数字转换为对应的整数。 函数原型: int atoi(const char* str);   参数: str:要转换的字符串。 返回值: 如果成功,则返回相应的整数值; 如果发生错误,则返回0。

    2024年02月02日
    浏览(39)
  • 【C语言】C语言 atoi 函数解析

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

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

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

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

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

    2024年03月20日
    浏览(45)
  • 【c语言】atoi的模拟实现

    atoi() 是 C语言的一个标准库函数,定义在stdlib.h头文件中 具体来讲,atoi() 函数首先会丢弃尽可能多的空白字符,直至找到第一个非空白字符,然后从该字符开始,识别 “+”、“-” 以及 0-9 之间的十进制数,最后将它们转换成整数。如果构成整数的后面还有其它字符,这些字

    2024年02月08日
    浏览(39)
  • 模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题

    各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。 我们要想实现某个函数,我们肯定要先知道这个函数的作用是什么,然后我们再根据它的作用来自己实现。我们先来看看stoi函数在库

    2023年04月19日
    浏览(57)
  • 【数据结构与算法分析】使用C语言实现队列的两种(带头结点与不带头结点)链式存储,并且给出一种循环队列的设计思想

      当我们编写程序时,经常需要处理各种数据结构。队列是一种常见的数据结构,它有着广泛的应用场景。队列的基本操作包括入队和出队,应用于模拟等待队列、消息队列、计算机缓存等场合。   在实际编程中,我们可以用不同的数据结构来实现队列。本文主要介绍了

    2024年02月08日
    浏览(102)
  • 【算法与数据结构】28、LeetCode实现strStr函数

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :首先判断字符串是否合法,然后利用for循环,取出子字符串利用compare函数进行比较。    程序如下 : 复杂度分析: 时间复杂度: O ( n ∗ m ) O(n * m) O ( n ∗ m ) ,假设haystack的长

    2024年02月12日
    浏览(45)
  • 数据结构入门(C语言版)图的概念和功能函数实现

    图是一种比线性表和树更复杂的数据结构。在线性表中,数据元素之间仅有 线性关系每个元素 只有 一个直接前驱 和 一个直接后继 。在树形结构中,数据元素之间存在明显的层次关系,并且每层的元素可能和下一层的多个元素(即其孩子结点)相邻,但只能和上一层的个元素(即其

    2024年02月06日
    浏览(49)
  • 数据结构与算法——排序(C语言实现)

    ✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿 🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟 🌟🌟 追风赶月莫停留 🌟🌟 🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀 🌟🌟 平芜尽处是春山

    2024年04月09日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包