C 语言标准库函数——strtol函数

strtol 函数包含在 C 语言标准库的 <stdlib.h> 头文件中,用于将字符串转换为长整数(long int)。它可以处理各种格式的字符串,并且可以指定进制。

strtol 函数的时间复杂度是 O(n),其中 n 是输入字符串的长度。


函数原型

long int strtol(const char *nptr, char **endptr, int base);

参数分析

strtol(字符串名字, 字符指针变量的地址, 进制);

 参数一:nptr

        ◦ 指向要转换的字符串的指针。

        ◦ 字符串可以包含前导空白字符,这些字符会被忽略。

        ◦ 字符串可以以 0x 或 0X 开头,表示十六进制数。

        ◦ 字符串可以以 0 开头,表示八进制数。

        ◦ 其他情况下,字符串被视为十进制数。

参数二:endptr

        ◦ 指向一个字符指针的指针,用于存储转换结束后的字符串位置。

        ◦ 如果 endptr 不为 NULL,strtol 会将转换结束后的字符串位置存储在 endptr 指向的指针中。

        ◦ 如果 endptr 为 NULL,则忽略此参数。

参数三:base

      ◦ 指定转换的进制,范围是 2 到 36。

        ◦ 如果 base 为 0,strtol 会根据字符串的前缀自动判断进制:

                ■ 如果字符串以 0x 或 0X 开头,视为十六进制。

        ·        ■ 如果字符串以 0 开头,视为八进制。

                ■ 否则,视为十进制。

返回值

  • 成功转换时,返回转换后的长整数。
  • 如果字符串中没有有效的数字,返回 0。
  • 如果转换结果超出 long int 的范围,返回 LONG_MAX 或 LONG_MIN,并设置 errno 为 ERANGE

使用样例 

想了解实例点这里:字符串提取数字求和⭐-CSDN博客

#include <stdio.h>
#include <stdlib.h>int main() {const char *str1 = "01234a5abc";const char *str2 = "0x1234a5abckertty";const char *str3 = "01234a5abcww";char *aa;char *bb;char *cc;long int num;// 十进制转换num = strtol(str1,&aa,8);printf("str1: %s, num: %ld aa :%s\n", str1, num,aa);// 十六进制转换num = strtol(str2, &bb, 16);printf("str2: %s, num: %ld, bb: %s\n", str2, num, bb);// 八进制转换num = strtol(str3, &cc, 8);printf("str3: %s, num: %ld, cc: %s\n", str3, num, cc);return 0;
}//使用strtol前必须定义一个字符指针变量 

输出 

str1: 01234a5abc, num: 668 aa :a5abc                                                                                    
str2: 0x1234a5abckertty, num: 2147483647, bb: kertty                                                                    
str3: 01234a5abcww, num: 668, cc: a5abcww                                                                               --------------------------------                                                                                        
Process exited after 0.2409 seconds with return value 0                                                                 
请按任意键继续. . .                                     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2462.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年前端开发学习路线图完整指南

如果您想成为前端开发人员&#xff0c;本指南适合您。无论您是从零开始还是已经了解基础知识&#xff0c;它都会帮助您专注于真正重要的事情并学习让您脱颖而出的技能。 刚开始的时候&#xff0c;我浪费了几个月的时间在不相关的教程上&#xff0c;因为我不知道从哪里开始&…

【蓝牙】win11 笔记本电脑连接 hc-06

文章目录 前言步骤 前言 使用电脑通过蓝牙添加串口 步骤 设置 -> 蓝牙和其他设备 点击 显示更多设备 更多蓝牙设置 COM 端口 -> 添加 有可能出现卡顿&#xff0c;等待一会 传出 -> 浏览 点击添加 hc-06&#xff0c;如果没有则点击 再次搜索 确定 添加成…

Docker--Docker Compose(容器编排)

什么是 Docker Compose Docker Compose是Docker官方的开源项目&#xff0c;是一个用于定义和运行多容器Docker应用程序的工具。 服务&#xff08;Service&#xff09;&#xff1a;在Docker Compose中&#xff0c;一个服务实际上可以包括若干运行相同镜像的容器实例&#xff0…

【Linux】11.Linux基础开发工具使用(4)

文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须…

【Linux 36】多路转接 - epoll

文章目录 &#x1f308; 一、epoll 初步认识&#x1f308; 二、epoll 相关接口⭐ 1. 创建 epoll -- epoll_create⭐ 2. 控制 epoll -- epoll_ctr⭐ 3. 等待 epoll -- epoll_wait &#x1f308; 三、epoll 工作原理⭐ 1. 红黑树和就绪队列⭐ 2. 回调机制⭐ 3. epoll 的使用过程 …

微信小程序订阅消息提醒-云函数

微信小程序消息订阅分2种&#xff1a; 1.一次性订阅&#xff1a;用户订阅一次就可以推送一次&#xff0c;如果需要多次提醒需要多次订阅。 2.长期订阅&#xff1a;只有公共服务领域&#xff0c;如政务、医疗、交通、金融和教育等。‌在用户订阅后&#xff0c;在很长一段时间内…

使用 Charles 调试 Flutter 应用中的 Dio 网络请求

为了成功使用 Charles 抓取并调试 Flutter 应用程序通过 Dio 发起的网络请求&#xff0c;需遵循特定配置步骤来确保应用程序能够识别 Charles 的 SSL 证书&#xff0c;并正确设置代理服务器。 配置 Charles 以支持 HTTPS 请求捕获 Charles 默认会拦截 HTTP 流量&#xff1b;…

《HTML在网络安全中的多面应用:从防范攻击到安全审查》

Html基础 Html简介 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是用于描述网页内容和结构的标准语言。以下是对HTML的简要介绍&#xff1a; 基本概念 定义&#xff1a; HTML不是一种编程语言&#xff0c;而是一种标记语言。 它使用标…

算法每日双题精讲 —— 二分查找(二分查找,在排序数组中查找元素的第一个和最后一个位置)

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 别再犹豫了&#xff01;快来订阅我们的算法每日双题精讲专栏&#xff0c;一起踏上算法学习的精彩之旅吧&#xff01;&#x1f4aa…

《C++11》深入剖析正则表达式库:解锁文本处理的高效之道

在现代编程领域&#xff0c;文本处理是一项不可或缺的任务&#xff0c;而正则表达式无疑是这一领域的强大利器。C11标准库的引入&#xff0c;为C开发者带来了正则表达式库&#xff0c;极大地丰富了C在文本处理方面的能力。本文将全方位、多角度地深入探讨C11正则表达式库&#…

Cosmos:英伟达发布世界基础模型,为机器人及自动驾驶开发加速!

1. 简介 在2025年消费电子展&#xff08;CES&#xff09;上&#xff0c;NVIDIA发布了全新的Cosmos平台&#xff0c;旨在加速物理人工智能&#xff08;AI&#xff09;系统的开发&#xff0c;尤其是自主驾驶车辆和机器人。该平台集成了生成式世界基础模型&#xff08;WFM&#x…

Hive集群的安装准备

Hive的安装与集群部署详细指南 一、环境与软件准备 在开始Hive的安装与集群部署之前&#xff0c;确保您准备好以下环境和软件&#xff1a; 虚拟机软件&#xff1a; VMware Workstation 17.5&#xff1a;用于创建和管理虚拟机&#xff0c;确保可以在其上安装Linux操作系统。 …

SpringBoot集成Mongodb

SpringBoot集成Mongodb 本文简要介绍SpringBoot集成mongodb&#xff0c;并实现增删改查 1. 引入依赖 spring-boot-starter-data-mongodb 提供了mongoTemplate供底层操作及mongodb驱动等 <dependency><groupId>org.springframework.boot</groupId><arti…

java根据模板导出word,并在word中插入echarts相关统计图片以及表格

引入依赖创建word模板创建ftl模板文件保存的ftl可能会出现占位符分割的问题&#xff0c;需要处理将ftl文件中的图片的Base64删除&#xff0c;并使用占位符代替插入表格&#xff0c;并指定表格的位置在图片下方 Echarts转图片根据模板生成word文档DocUtil导出word文档 生成的wor…

RabbitMQ的工作模式

&#xff08;一&#xff09;工作模式 RabbitMQ有7种工作模式来进行消息传递&#xff0c;我们上一篇博客就是简单模式 1.简单模式&#xff08;simple&#xff09; 也就是点对点的形式 P就是生产者&#xff0c;C就是消费者&#xff0c;Queue就是消息队列&#xff08;生产者向qu…

晨辉面试抽签和评分管理系统之十:如何搭建自己的数据库服务器,使用本软件的网络版

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统-编写 bundle.json文件

bundle.json 文件内容如下所示&#xff1a; 下面是对各个字段的解释&#xff1a; 1. name: "ohos/demos" - 这是组件或项目的名称&#xff0c;这里表示它属于 OHOS&#xff08;OpenHarmony OS&#xff09;生态系统下的一个名为"demos"的组件。 2. descri…

JavaScript-正则表达式方法(RegExp)

RegExp 对象用于将文本与一个模式匹配。 有两种方法可以创建一个 RegExp 对象&#xff1a;一种是字面量&#xff0c;另一种是构造函数。 字面量由斜杠 (/) 包围而不是引号包围。 构造函数的字符串参数由引号而不是斜杠包围。 new RegExp(pattern[, flags])一.符集合 1.选择…

信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高

《港湾商业观察》施子夫 1月8日&#xff0c;深交所官网显示&#xff0c;浙江信凯科技集团股份有限公司&#xff08;以下简称“信凯科技”&#xff09;主板IPO提交注册。 自2022年递交上市申请&#xff0c;信凯科技的IPO之路已走过两年光景&#xff0c;尽管提交注册&#xff0…

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关&#xff08;RD Gateway&#xff09;中的一个重大漏洞&#xff0c;该漏洞可能允许攻击者利用竞争条件&#xff0c;导致拒绝服务&#xff08;DoS&#xff09;攻击。该漏洞被标识为CVE-2025-21225&#xff0c;已在2025年1月的补丁星期二更新中得到…