C语言从头学62——学习头文件stdlib.h(一)

embedded/2024/9/24 2:21:24/

       stdlib.h是一个非常重要的头文件,其中定义了使用频率很高的宏、函数等。
一、数据类型
       size_t:运算符sizeof的返回值类型
       wchar_t:宽字符类型
二、宏
       NULL:空指针(用于声明后但未使用的指针的赋初值)
       EXIT_SUCCESS:函数运行成功时的退出状态
       EXIT_FAILURE:函数运行错误时的退出状态
       RAND_MAX:rand() 函数可以返回的最大值
       MB_CUR_MAX:当前语言环境中,多字节字符占用的最大字节数
三、stdlib中的函数
1、函数abs()
      功能:计算int型整数的绝对值
      使用格式:abs(参1);
         参1:整型数值或变量
      返回值:返回参1的绝对值
      说明:abs函数是计算int类型绝对值的;还有用于long和longlong类型的函数,它们是labs(),llabs(),用法一样。
2、函数div()
      功能:计算两个整型数相除的商和余数。
      使用格式:div(参1,参2);
         参1:被除数(int型)
         参2:除数(int型)
      返回值:商和余数两个值怎样返回呢?它返回的是一个结构体,我们用div_t结构体声明的变量        接收即可。这个结构体有两个属性:quot—商、rem—余数,均为int类型。
      说明:和abs一样,计算long型、long long型的函数为:ldiv(),lldiv(),对应的接收结构体为ldiv_t和lldiv_t,结构体属性名与前面相同。
3、字符串转成整型函数atoi()
      功能:将字符串转成int类型数值
      使用格式:atoi(参1);
          参1:由数字组成的字符串
      返回值:返回转换后的int型数值,对于非可转换字符则返回0。
      说明:
       a.如果字符串是以空格开头的,后边才是数字,空格会被忽略;
       b.数字后边还跟着非数字字符,则转换到第一个非数字字符就停止,非数字字符后边再有数字也不再转换;
       c.如果字符串以非数字字符开头,与不包含数字的字符串一样,转换结果会是0;
       d.因为涉及数据类型,字符串转数值函数也有好几个,它们的使用方法与atoi相似:
          atof():字符串转成 double 类型(头一个小数点会被正常转换,再出现小数点连同后边的数字不再转换)
          atol():字符串转成 long int 类型
          atoll():字符串转成 long long int 类型
4、字符串转浮点数函数strtof()
      功能:将字符串转成float类型数值
      使用格式:strtof(参1, 参2);
         参1:被转换的字符串
         参2:一个字符串指针用于接收参1中不能转换部分字符串(字符串本身就是指针,再指向字符串,相当于char**)
         参1中如无不可转换部分或者不需要处理,参2则可以写成NULL
      返回值:返回float类型的转换后的数值,字符串是不可转换字符返回0。
      说明:
       a. 如果字符串前端有空格,函数会忽略空格。
       b. 如果头一个字符是不可转换字符,则后边的即使可以转换也转换不了,返回0。
       c. 这个函数也有其他类型版本,如:strtod()—转成double类型、strtold()—转成long double类型、
5、字符串转整型数函数(带进制)strtol()
      功能:将字符串转换成所需进制的整型数
      使用格式:strtol(参1,参2,参3);
         参1:被转换字符串
         参2:指向不能转换字符的指针。这个参数如果设为 NULL,则不对不可转换字符进行处理。
         参3:规定转换结果的进制(以整型数方式设置)
      返回值:返回转换后的结果,类型为long int。
      说明:
       a. 由于有了参3,故有些非数字字符也变成了数字字符,如16进制的ABCDEF。
       b. 字符串中表示进制的如:0,0x等不影响转换结果,有无均可,七决定作用的是参3。
       b. 这个函数除了多了一个参3引起的一些变化外,其余情况和上一个函数相似。
       c. 这个函数也有其它数据类型的版本,如:strtoll()—字符串转成long long int类型、strtoul()—字符串转成unsigned long int类型、strtoull()—字符串转成unsigned long long int类型;使用方法相似。
      以上函数的实验程序如下: 

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
//数据类型字节数printf("size_t占字节数:%lld\n", sizeof(size_t));//运行结果:size_t占字节数:8printf("wchar_t占字节数:%lld\n", sizeof(wchar_t));//运行结果: wchar_t占字节数:2
//实验绝对值函数abs()int a = -100;printf("a的绝对值:%d\n",abs(a));//运行结果:a的绝对值:100
//实验求商、求余函数div()a = 65;int b = 9;div_t c = div(a, b);printf("a除以b的商是%d 余数是%d\n", c.quot, c.rem);//运行结果:a除以b的商是7 余数是2
//字符串转数值atoichar* s = " 123asd";a = atoi(s);printf("字符串s转成的数字为:%d\n",a);//运行结果:字符串s转成的数字为:123double x = atof("3.1415926");//运行结果:x = 3.1415926printf("x=%.7f\n", x);
//字符串转数值strtof()s = "123.45678ABCDEF22";char* s2;float y = strtof(s,&s2); //转换成float类型并用s2接收不可转换部分printf("转换后的浮点数:%f\n", y);//运行结果:转换后的浮点数:123.456779printf("不可转换部分字符为:%s\n", s2);//运行结果:不可转换部分字符为:ABCDEF22s = "5000.2345";double y1 = strtod(s, NULL);printf("s转换后的值为:%f\n", y1); //运行结果:s转换后的值为:5000.234500
//字符串转整型数strtol()s = "0xffffg";long int i = strtol(s,&s2,16);printf("i的十进制值:%d 未转换:%s\n", i, s2);//运行结果:i的十进制值:65535 未转换:gs = "10111111";printf("s转换后十进制值:%d\n",strtol(s,NULL,2));//运行结果:s转换后十进制值:191getchar();return 0;
}


http://www.ppmy.cn/embedded/115851.html

相关文章

嘉宾云集旌城 只为大赛而来 2024ISGC国际烈酒(中国)大奖赛在德阳落下帷幕

秋高气爽、古蜀之源&#xff0c;迎来第六届国际烈酒&#xff08;中国&#xff09;大奖赛&#xff1b;五谷丰登、重装之都&#xff0c;齐聚百名国际烈酒大奖赛评委。 9月18日&#xff0c;由德阳市人民政府、国家葡萄酒及白酒露酒产品质量检验检测中心、上海合作组织多功能经贸平…

7、论文阅读:20 年来的物体检测:一个调查

目标检测综述论文:Object Detection in 20 Years: A Survey 前言引言20年来的目标检测目标检测路线图里程碑A Survey) 前言 本文从技术演变的角度广泛回顾了这个快速发展的研究领域(1990s - 2022s)。本文涵盖了许多主题,包括历史上的目标检测的里程碑、检测数据集、指标、…

字母与符号检测系统源码分享

字母与符号检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

IPsec-VPN中文解释

一 IPsec-VPN 实操 (点到点) 网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW10…

threejs加载高度图渲染点云,不支持tiff

问题点 使用的point来渲染高度图点云&#xff0c;大数据图片无效渲染点多&#xff08;可以通过八叉树过滤掉无效点增加效率&#xff0c;这个太复杂&#xff09;&#xff0c;但是胜在简单能用 效果图 code 代码可运行&#xff0c;无需npm <!DOCTYPE html> <html la…

Windows本地制作java证书(与jeecgboot配置本地证书ssl问题)

1&#xff1a;JDK生成自签证书SSL,首先以管理员身份运行CMD窗口&#xff0c;执行命令 keytool -genkey -alias testhttps -keyalg RSA -keysize 2048 -validity 36500 -keystore "F:/ssl/testhttps.keystore"F:\ssl>keytool -genkey -alias testhttps -keyalg R…

Nodejs+vue+Express游戏分享网站的设计与实现 7a2s2

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式&#xff0c;开发软件有很多种可以用&#xff0c;本次开发用到的软件是vscode&#xff0c;用到的数据库是…

JavaEE: 深入探索TCP网络编程的奇妙世界(六)

文章目录 TCP核心机制TCP核心机制九: 面向字节流TCP核心机制十: 异常处理 小小的补充(URG 和 PSH)~TCP小结TCP/UDP 对比用UDP实现可靠传输(经典面试题) 结尾 TCP核心机制 上一篇文章JavaEE: 深入探索TCP网络编程的奇妙世界(五) 书接上文~ TCP核心机制九: 面向字节流 TCP是面…