人生应该树立目标,否则你的精力会白白浪费。💓💓💓
目录
•🌙知识回顾
🍋知识点一:atoi函数的使用和实现
• 🌰1.函数介绍
• 🌰2.代码演示
• 🌰3.atoi函数的实现
• 🌰3.扩展
🍋知识点二:atof函数的使用
• 🌰1.函数介绍
• 🌰2.代码演示
•🌙Conclude结尾
•🌙知识回顾
亲爱的读者们大家好!💖💖💖,我们今天介绍两个比较简单的函数,也算是对前面几期较难内容的放松,上一篇文章我们详细解析了C语言中动态内存管理的相关知识,包括malloc,calloc,realloc等,希望大家能够掌握并应用~
今天这篇文章给大家带来的是C语言中的两个函数,atoi和atof,这是两个函数还是会见到的,虽然不是我们很经常使用的函数,但我们也不能放任不管,掉以轻心,也许什么时候就用到了,希望大家好好学习,也希望可以给大家带来帮助。
👇👇👇
💘💘💘知识连线时刻(直接点击即可)🎉🎉🎉复习回顾🎉🎉🎉
C语言-动态内存分配
博主主页传送门:愿天垂怜的博客
🍋知识点一:atoi函数的使用和实现
• 🌰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;
}
输出结果:
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'=1ret = ret * 10 + (*str - '0') * flag;//最大只能INT_MAX,最小只能INT_MINif (ret > INT_MAX){ret = INT_MAX;}else if (ret < INT_MIN){ret = INT_MIN;}}elsereturn (int)ret;str++;}return (int)ret;
}
• 🌰3.扩展
其实还有两个函数可以了解一下:
🔥atol:将字符串转换成long类型,转换的范围是比atoi要更大一些。
🔥strtol:将字符串转换成long类型,这个函数更加复杂,可以按照各种进制转换。
可以扩展学习一下。
🍋知识点二:atof函数的使用
• 🌰1.函数介绍
double atof(const char* str);
🔥功能:
1.atof函数用于将字符串转换为浮点数(double类型)。
2.它解析字符中的数字部分,并将其转换相应的浮点数表示。
3.该函数在<stdlib.h>头文件中声明。
🔥参数:
str:指针,指向待转换的字符串,它可以包含可选的正负号、整数部分、小数部分和指数部分。
🔥返回值:
atof:函数的返回值类型是double,表示成功转换的浮点数。
• 🌰2.代码演示
#include <stdio.h>
#include <stdlib.h>int main()
{printf("%lf\n", atof("123.45"));printf("%lf\n", atof("+123.45"));printf("%lf\n", atof("-123.45"));printf("%lf\n", atof(" -123.45"));printf("%lf\n", atof("3.14E-2"));//3.14*10^-2 = 0.0314printf("%lf\n", atof("hehe"));return 0;
}
输出结果:
123.450000
123.450000
-123.450000
-123.450000
0.031400
0.000000
•🌙Conclude结尾
这篇内容相对简单,但还是希望大家能够熟练应用并掌握它们的基本用法,其中atof的模拟实现较为复杂,因为要考虑科学计数法的情况,大家有兴趣可以自行探讨~