atoi函数

 

       Hello, 大家好,我是一代,今天给大家讲解atoi函数的有关知识

       所属专栏:C语言

       创作不易,望得到各位佬们的互三呦

 

 

函数原型:int atoi (const char * str);

头文件:stdlib.h

功能:将字符串转换为整数。即跳过空白字符,碰到负号或者数字开始转换,转换到非数字字符为止。

注意:如果str中的第一个空白字符序列并不是有效的整数,或者由于str为空或仅包含空白字符而不存在这样的序列,则不执行转换并返回0.

转换成功后,函数将转换后的整数作为int值返回。

如果atoi()函数转换失败,例如要转换的类型超过了int表示的范围,如果要转换的是正数,则返回INT_MAX(2147483647),如果要转换的是负数,则返回INT_MIN(-2147483648)

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
	const char* str1 = "   +";
	const char* str2 = "   12er3";
	const char* str3 = "   -1239999999999";//超过了整形的最小值
	const char* str4 = "   \0+123";//碰到‘\0’结束
	const char* str5 = "";
	const char* str6 = "abc123";
	const char* str7 = "   \t+123";//‘\t’为一个字符
	printf("%d ", atoi(str1));
	printf("%d ", atoi(str2));
	printf("%d ", atoi(str3));
	printf("%d ", atoi(str4));
	printf("%d ", atoi(str5));
	printf("%d ", atoi(str6));
	printf("%d ", atoi(str7));
	return 0;
}

 

atoi函数模拟

 


#include<stdio.h>
#include<ctype.h>
int my_atoi(const char* str)
{
	long long result = 0;//用long long 防止溢出
	int flag = 1;
	if (*str == '\0')
		return 0;
	while (isspace(*str))
	{
		str++;
	}
	if (*str == '-')
	{
		flag = -1;
		str++;
	}
	if (*str == '+')
	{
		str++;
	}
	while (1)
	{
		if(isdigit(*str))//跳过空白字符
		{
			result = result * 10 + *str - '0';
		}
		else
		{
			return (int)result * flag;
		}
		if (result > _CRT_INT_MAX && flag == 1)
		{
			return _CRT_INT_MAX;
		}
		if (-result < -_CRT_INT_MAX - 1 && flag == -1)
		{
			return -_CRT_INT_MAX - 1;
		}
		str++;
	}
	return 0;
}
int main()
{
	char str[100];
	while (1)
	{
		gets(str);
		int n = my_atoi(str);
		if (n == -_CRT_INT_MAX - 1 || n == _CRT_INT_MAX)
		{
			printf("转换失败");
		}
		else
		printf("转换成功:%d\n", n);
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/274044.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

考研数学|张宇还是武忠祥?怎么选?

我觉得张宇老师和武忠祥老师讲课实力都差不多&#xff0c;区别就在于风格的不同 张宇老师的讲课风格比较活泼&#xff0c;擅长调动学生的思维跟着课堂一起走&#xff0c;并且张宇老师发明了很多容易记的段子&#xff0c;但是虽然张宇老师段子多&#xff0c;一点也不妨碍他讲课…

unity发布安卓获取读取权限

一、Player Settings 设置 Player Settings>Player>Other Settings> Android > Write Permission > External (SDCard). 二、代码 using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.Andr…

【数据结构】二叉树OJ题(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 边缘设备图像识别及部署(二)

专栏目录 边缘计算WEB端应用融合&#xff1a;AI行为识别智能监控系统搭建指南 – 整体介绍&#xff08;一&#xff09; 边缘计算WEB端应用融合&#xff1a;AI行为识别智能监控系统搭建指南 -- 边缘图像识别及部署&#xff08;二&#xff09; 前言边缘图像识别与推流整体思路原始…

赛昉(starFive)星光2 多媒体框架分析与功能验证

开发板 开发板长这个样子: 串口调试接口如下: 整体支持情况 驱动&firmware&API jh7110/soft_3rdpart/wave511 : H.264&H.265 Decoder (Chips&Media 芯媒)jh7110/soft_3rdpart/wave521 : H.264&H.265 Encoder (Chips&Media 芯媒)jh7110/soft_3rdp…

LeetCode刷题【树状数组、并查集】

目录 树状数组307. 区域和检索 - 数组可修改406. 根据身高重建队列673. 最长递增子序列的个数1409. 查询带键的排列 并查集128. 最长连续序列130. 被围绕的区域 树状数组 307. 区域和检索 - 数组可修改 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 …

HTML案例-1.标签练习

效果 源码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&g…

基于HSV色度空间的图像深度信息提取算法FPGA实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 ​编辑2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA结果导入到matlab显示结果如下&#xff1a; matlab的对比测试结果如下&#xff1a; 2.算法运行软件版本 vivado2019.2 matlab2022a…

(css)vue 自定义背景 can‘t resolve

(css)vue 自定义背景 can’t resolve 旧写法&#xff1a; background-image: url(/assets/images/step-bg.jpg);background-size: 100% 100%; 新写法&#xff1a; background-image: url(~/assets/images/step-bg.jpg);background-size: 100% 100%; 解决参考&#xff1a;https…

Unity在UGUI上通过绘制网格顶点自由画线

该插件的实现是使用UI组件的绘图API来动态生成和修改几何形状&#xff0c;可自由动态更改画线的粗细、拐角圆滑度、颜色&#xff0c;自由增减节点&#xff0c;不额外增加gameobject&#xff0c;并且在原生的UGUI上以ScreenSpace-Overlay的状态下&#xff0c;显示效果如下所示 …

Spring Boot+Vue前后端分离项目如何部署到服务器

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

k8s集群部署elk

一、前言 本次部署elk所有的服务都部署在k8s集群中&#xff0c;服务包含filebeat、logstash、elasticsearch、kibana&#xff0c;其中elasticsearch使用集群的方式部署&#xff0c;所有服务都是用7.17.10版本 二、部署 部署elasticsearch集群 部署elasticsearch集群需要先优化…

CMU module design

CMU 1.概要&#xff1a; 时钟单元可以产生主频时钟信号&#xff0c;作为整个单片机系统的时钟源。且对各个外设提供时钟。 2.验证参数 参数编号参数名称可选项备注1测试模块CMU用于标识被测试的模块2模块功能模块功能描述被测试模块的功能3测试项测试项具体的测试项目4测试子…

Java使用Selenium实现自动化测试以及全功能爬虫

前言 工作中需要抓取一下某音频网站的音频&#xff0c;我就用了两个小时学习弄了一下&#xff0c;竟然弄出来&#xff0c;这里分享记录一下。 springboot项目 Selenium Java使用Selenium实现自动化测试以及全功能爬虫 前言1 自动化测试2 java中集成Selenium3 添加浏览器驱动4…

构建部署_Docker常用命令

构建部署_Docker常见命令 启动命令镜像命令容器命令 启动命令 启动docker&#xff1a;systemctl start docker 停止docker&#xff1a;systemctl stop docker 重启docker&#xff1a;systemctl restart docker 查看docker状态&#xff1a;systemctl status docker 开机启动&…

【力扣白嫖日记】601.体育馆的人流量

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 601.体育馆的人流量 表&#xff1a;Stadium 列名类型idintvisit_datedatepeopleint 编写解决方案找出每行的…

Transformer的前世今生 day01(预训练、统计语言模型)

预训练 在相似任务中&#xff0c;由于神经网络模型的浅层是通用的&#xff0c;如下图&#xff1a; 所以当我们的数据集不够大&#xff0c;不能产生性能良好的模型时&#xff0c;可以尝试让模型B在用模型A的浅层基础上&#xff0c;深层的部分自己生成参数&#xff0c;减小数据集…

H266开源视频编码器VVENC现状

VVenC 是由 Fraunhofer HHI 研究团队开发的&#xff0c;主要是视频编码系统组。HHI 是欧洲最大的研究组织 Fraunhofer 协会的成员&#xff0c;该协会是德国的一个大型非营利性组织。源代码在&#xff1a; https://github.com/fraunhoferhhi/vvenc VVenC几乎与H.266视频标准同时…

【01】htmlcssgit网络基础知识

一、html&css 防脱发神器 一图胜千言 使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: 0;padding: 0;box-sizing: border-box; }颜色的 alpha 通道 颜色的 alpha 通道标识了色彩的透明度,它是一个 0~1 之间的取值,0 标识完全透明,1…

常用大数据组件的Web端口号总结

常用大数据组件的Web端口号总结 网站访问方式 在地址栏中输入虚拟机名称对应组建的Web端口号&#xff0c;回车访问。 常用大数据组建的Web端口号 Hadoop HDFS&#xff1a;9870Hadoop YARN ResourceManager&#xff1a;8088JobHistoryServer&#xff1a;19888 Zeppelin&…
最新文章