当前位置: 首页 > news >正文

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

       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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 加固与脱壳01 - 环境搭建
  • async await执行顺序
  • 11周年 | 初心不改,焕新前行,奔赴下一个10年!
  • Unity Debug时出现请选择unity实例
  • 【软考】计算机系统硬件基本组成
  • Axure大屏可视化模板:跨领域数据分析平台原型案例
  • 使用docker创建zabbix服务器
  • 出现conda不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法
  • 【GitLab】安装和使用
  • 【MYSQL】深入了解 MySQL 事务、隔离级别与高阶函数
  • 前端开发之装饰器模式
  • 关于 SQL 的 JOIN 操作
  • chsharp文件如何查找在unity中使用的 位置?
  • 算法打卡:第十一章 图论part01
  • C#的数据类型转换
  • [PHP内核探索]PHP中的哈希表
  • [译]如何构建服务器端web组件,为何要构建?
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • fetch 从初识到应用
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript创建对象的四种方式
  • Java反射-动态类加载和重新加载
  • Java方法详解
  • js操作时间(持续更新)
  • laravel5.5 视图共享数据
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • log4j2输出到kafka
  • October CMS - 快速入门 9 Images And Galleries
  • Redis字符串类型内部编码剖析
  • Spark学习笔记之相关记录
  • 阿里云应用高可用服务公测发布
  • 巧用 TypeScript (一)
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 实战|智能家居行业移动应用性能分析
  • 算法---两个栈实现一个队列
  • 我从编程教室毕业
  • 正则表达式
  • kubernetes资源对象--ingress
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • (13)DroneCAN 适配器节点(一)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (6)设计一个TimeMap
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Java数据结构)ArrayList
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)斐波那契Fabonacci函数
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (自用)gtest单元测试
  • *setTimeout实现text输入在用户停顿时才调用事件!*