关于atoi函数的介绍和模拟(详细版)

阅读: 评论:0

关于atoi函数的介绍和模拟(详细版)

关于atoi函数的介绍和模拟(详细版)

文章目录

  • 1.什么是atoi函数
  • 2.模拟函数atoi

1.什么是atoi函数

atoi函数的主要作用就是把字符串转化成整数

它的函数类型为

int atoi(const char* str)

由此处我们可以知道它的返回值为整数,所以转化后的值不可以超过int的范围

这就是他的最大值和最小值

1.首先该函数会将字符串中的大部分空白字符舍去,从头开始,不断向后检索(按照顺序的),直到找到第一个非空白字符,识别出一个加号或者减号,和后面尽可能多的十进制数字,将其返回一个int类型的数值(注意范围哦
2.如果这个字符串中

如图所示,当在整数123后面,减号就被忽略,不会被显示

2.模拟函数atoi

我们会遇到很多种情况
1.传一个空字符串-----my_atoi(" ");
2.传一个空指针-----my_atoi("NULL");
3.所传入的的数字超过了int的取值范围
4.传入一个整数加字母的字符串
以上的这些情况会在使用atoi函数的时候报错呢!!!

在模拟实现的过程中我们会用到枚举的新知识关于枚举的知识可以点开看看
在实现函数的过程中我们要一次解决上面的情况

#include <assert.h>
#include <stdio.h>
#include <ctype.h>
enum Status
{VALID,INVALID};status=INVALID;//先前我们提到了按顺序检索就可以初始化int my_atoi( const char* str){//1.空指针assert(src);char* p=(char*)str;long long n=0;int flag=1;if(*str==''){return 0;}while(*p==' '){p++;}if(*p=='+'){flag=1;p++;}else if(*p=='-'){flag=-1;p++;}while(*p){	if(isdigit(*p))//isdigit用于检测*p是不是阿拉伯数字0~9{	n=n*10+flag*(*p-'0');if(n>INT_MAX){n=INT_MAX;break;}else if(n<INT_MIN){n=INT_MIN;break;}}else{break;}p++;}if(*p=='0'){status=VALID;//赋值}return (int) n;}int main(){char arr[]="12345678";int m=my_atoi(arr);if(status==VALID){printf("%dn",m);}elseprintf("非法转换:%dn",m);return 0;}

制作不易,希望大家给博主点个关注和赞赞呗😍😍😍😍😍😍😍😍

谢谢大家了

本文发布于:2024-02-04 22:39:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170717988160341.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   详细   atoi
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23