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

news2024/9/24 2:19:25

       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.coloradmin.cn/o/2159070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

力扣 2529.正整数和负整数的最大计数

文章目录 题目介绍解法 题目介绍 解法 采用红蓝染色体法&#xff0c;具体介绍参考 红蓝染色体法 通过红蓝染色体法可以找到第一个大于大于target的位置&#xff0c;使所以本题可以找第一个大于0的位置&#xff0c;即负整数的个数&#xff1b;数组长度 - 第一个大于1的位置即正…

2000-2012年各地级市市长特征信息数据/市长特征信息大全数据

2000-2012年各地级市市长特征信息数据 1、时间&#xff1a;2000-2012年 2、来源&#xff1a;百度搜索手工整理 3、指标&#xff1a;省级政区代码、省级政区名称、地市级政区代码、地市级政区名称、年份、市长姓名、出生年份、出生月份、籍贯省份代码、籍贯省份名称、籍贯地市…

垃圾邮件检测_TF-IDF分析,聚类分析与朴素贝叶斯

数据入口&#xff1a;基于机器学习的垃圾信息识别分类 - Heywhale.com 本数据集专为邮件和短信的垃圾信息分类设计&#xff0c;适合建立垃圾邮件检测模型。 数据说明 字段名说明message_content邮件或短信的正文内容is_spam标签&#xff0c;指示该消息是否为垃圾信息&#x…

恒生科指八连涨,汽车股强势

9月20日电 周五&#xff0c;港股三大股指集体收涨。恒生指数涨1.36%报18258.57点&#xff0c;连续第六个交易日上涨&#xff1b;恒生科技指数涨1.43%报3703.84点&#xff0c;连续第八个交易日上涨&#xff0c;创逾两个月来新高&#xff1b;恒生中国企业指数涨1.21%报6381.5点&a…

Set 和 Map 的模拟实现

1、引言 在数据结构与算法的学习与实践中&#xff0c;关联容器&#xff08;associative containers&#xff09;是不可忽视的重要工具。作为高效管理数据的一类容器&#xff0c;C 标准库中的 set 和 map 在现代软件开发中扮演着关键角色。这两个容器通过平衡二叉搜索树&#x…

c++类中的特殊函数

My_string.cpp #include <iostream> #include "my_string.h" #include <string.h> using namespace std; My_string::My_string():size(15) { this->ptr new char[size] ; this->ptr[0]\0;//串为空串 this->len 0; }; My_string::My_str…

Leetcode3289. 数字小镇中的捣蛋鬼

Every day a Leetcode 题目来源&#xff1a;3289. 数字小镇中的捣蛋鬼 解法1&#xff1a;哈希 代码&#xff1a; /** lc appleetcode.cn id3289 langcpp** [3289] 数字小镇中的捣蛋鬼*/// lc codestart class Solution { public:vector<int> getSneakyNumbers(vector…

基于SpringBoot+Vue+MySQL的电影院购票管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着电影产业的蓬勃发展&#xff0c;电影院已成为人们休闲娱乐的重要场所。然而&#xff0c;传统的电影院购票管理系统存在诸多不便&#xff0c;如购票流程繁琐、排队时间长、无法提前选座等问题&#xff0c;给观众的观影体验带…

光控资本:沪指涨0.72%,煤炭、银行板块拉升,车路云概念活跃

23日早盘&#xff0c;沪指盘中强势上扬&#xff0c;深证成指亦走高&#xff0c;场内超3100股飘红。 到午间收盘&#xff0c;沪指涨0.72%报2756.39点&#xff0c;深证成指涨0.58%&#xff0c;创业板指微涨0.09%&#xff0c;上证50指数涨0.73%&#xff1b;两市估计成交3657亿元。…

828华为云征文 | 将Vue项目部署到Flexus云服务器X实例并实现公网访问

一、Flexus云服务器X实例简介 1.1 概述 华为云Flexus X实例是华为云推出的一款创新云服务器产品&#xff0c;它主要面向中小企业和开发者&#xff0c;旨在解决传统云服务中的痛点&#xff0c;提供更加灵活、高效的云服务体验。 华为深刻洞察了中小企业和开发者在云服务应用中遇…

全栈开发(三):springBoot3中使用mybatis-plus

MyBatis-Plus &#x1f680; 为简化开发而生 (baomidou.com) 1.配置pom.xml <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version></dependency&g…

JavaScript --- 字符串常用方法(2)

concat拼接 和号一样 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

基于微信小程序的商品展示+ssm(lw+演示+源码+运行)

商品展示系统 摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;微信小程序被用户普遍使用&#xff0c;为方…

英伟达 Blackwell平台和ASIC芯片升级助力,预计2025年液冷散热渗透率将超20%

TrendForce集邦咨询: 英伟达 Blackwell平台和ASIC芯片升级助力&#xff0c;预计2025年液冷散热渗透率将超20% 根据TrendForce集邦咨询最新调查&#xff0c;随着NVIDIA Blackwell新平台预计于2024年第四季出货&#xff0c;将推动液冷散热方案的渗透率明显增长&#xff0c;从202…

完全无线测量物体电压

无线电压测量的物理原理 所有导电物体都具有一定的电容&#xff0c;我们可以将其分为自电容和相对于其他导体的电容。对于孤立物体&#xff0c;自电容占主导地位&#xff1b;对于导电球体&#xff0c;这是教科书表达式C 4 πεε 0 R&#xff0c;其中ε 0是自由空间的介电常数…

MQ入门(二):java客户端SpringAMQP

目录 1.SpringAMQP 1.1.导入demo工程 1.2.快速入门 1.2.1.消息发送 1.2.2.消息接收 1.2.3.测试 1.3.WorkQueues模型 1.4.交换机类型 1.4.1.Fanout交换机 1.4.2.Direct交换机 1.4.3.Topic交换机 1.5.声明队列和交换机 1.5.1.基于注解声明 1.6.消息转换器 1.6.1.测…

Centos Stream 9根目录扩容

要将 sda 的剩余空间扩展给 cs-root&#xff0c;可以按照以下步骤进行操作。假设你已经有剩余的未分配空间在 sda 上。 步骤 1&#xff1a;查看当前磁盘分区情况 首先&#xff0c;确保你有未分配的空间在 sda 上。 lsblk步骤 2&#xff1a;创建新的分区 使用 fdisk 或 par…

SpringBoot+Aop+注解方式 实现多数据源动态切换

整体思路&#xff1a; 引入基本依赖SpringBootAopMySqlMyBatislombok在配置文件中配置多个数据源创建数据源配置类用于读取配置编写用于标识切换数据源的注解创建数据源切换工具类DataSourceContextHolder编写切面类用于在注解生效处切换数据源编写配置类&#xff0c;加载数据…

在线文档搜索服务测试报告

目录 1. 项目背景: 2. 项目功能: 3. 测试计划: 1. 项目背景: 1.1 在线搜索服务的前端主要一下几个功能, 分别是进入搜索引擎界面(有提示输入关键词信息); 进行输入关键词的界面, 以及显示有关关键词的文档url, 点击跳转至目标文档的界面; 1.2 该在线搜索服务的文档可以实现用…