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

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占字节数:8
    printf("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
//字符串转数值atoi
    char* s = " 123asd";
    a = atoi(s);
    printf("字符串s转成的数字为:%d\n",a);//运行结果:字符串s转成的数字为:123
    double x = atof("3.1415926");//运行结果:x = 3.1415926
    printf("x=%.7f\n", x);
//字符串转数值strtof()
    s = "123.45678ABCDEF22";
    char* s2;
    float y = strtof(s,&s2); //转换成float类型并用s2接收不可转换部分
    printf("转换后的浮点数:%f\n", y);//运行结果:转换后的浮点数:123.456779
    printf("不可转换部分字符为:%s\n", s2);//运行结果:不可转换部分字符为:ABCDEF22
    s = "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 未转换:g
    s = "10111111";
    printf("s转换后十进制值:%d\n",strtol(s,NULL,2));//运行结果:s转换后十进制值:191
    getchar();
    return 0;
}


http://www.kler.cn/news/317437.html

相关文章:

  • 如何通过蜂巢(容器安全)管理内部部署数据安全产品与云数据安全产品?
  • 【Android】 IconFont的使用
  • 一体化运维监控管理平台的全面监控能力
  • 使用Hutool-poi封装Apache POI进行Excel的上传与下载
  • 单线服务器是什么?单线服务器有什么优点?
  • 掌握 Flutter 中的 `Overlay` 和 `OverlayEntry`:弹窗管理的艺术
  • 如何将Vue项目部署至 nginx
  • 力扣最热一百题——最小覆盖子串
  • 【优选算法之前缀和】No.6--- 经典前缀和算法
  • Unity webgl跨域问题 unity使用nginx设置跨域 ,修改请求头
  • 基于微信小程序的宠物寄养平台的设计与实现+ssm(lw+演示+源码+运行)
  • Adams与Matlab通过FMI联合仿真
  • 我的AI工具箱Tauri版-FunAsr音频转文本
  • git 删除 git push 失败的记录
  • 阿里开源多模态大模型Ovis1.6,重塑出海电商AI格局
  • python自学笔记
  • 价格便宜又好用的云电脑挑选:ToDesk云电脑 vs 青椒云
  • oracle rac多个实例就相当于多个数据库系统程序
  • Python 管理 AWS ElastiCache 告警
  • 前端——盒子模型
  • 巨潮股票爬虫逆向
  • Qt_多元素控件
  • 机器学习(1)——线性回归、线性分类与梯度下降
  • CSS中的多种关系选择器
  • ASP .NET CORE 6 项目实现WebSocket通信实践
  • Linux环境下Redis三主三从集群搭建
  • Python+requests+pytest+allure自动化测试框架
  • 把vue页面中展示的UI和图表导出为pdf或者图片
  • linux/CentOS 开机启动程序
  • Linux-DHCP服务器搭建