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.mzph.cn/news/892790.shtml

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

相关文章

SpringBoot链接Kafka

一、SpringBoot生产者 &#xff08;1&#xff09;修改SpringBoot核心配置文件application.propeties, 添加生产者相关信息 # 连接 Kafka 集群 spring.kafka.bootstrap-servers192.168.134.47:9093# SASL_PLAINTEXT 和 SCRAM-SHA-512 认证配置 spring.kafka.properties.securi…

Win11下python 调用C++动态链接库dll

这里写自定义目录标题 Win11下python 调用C动态链接库dll环境修改C语言代码Visual Studio 2019生成dllPython 加载DLLpython 数据类型适配python调用函数 Win11下python 调用C动态链接库dll 在一些耗时的函数上考虑使用C进行加速&#xff0c;涉及把cpp文件转为dll&#xff0c;…

探索 Transformer²:大语言模型自适应的新突破

目录 一、来源&#xff1a; 论文链接&#xff1a;https://arxiv.org/pdf/2501.06252 代码链接&#xff1a;SakanaAI/self-adaptive-llms 论文发布时间&#xff1a;2025年1月14日 二、论文概述&#xff1a; 图1 Transformer 概述 图2 训练及推理方法概述 图3 基于提示的…

CSRF(跨站请求伪造)深度解析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

七十五:握手的优化:Session缓存、Ticket票据及TLS 1.3的0-RTT

引言 在现代互联网环境中&#xff0c;安全性和性能是设计网络协议时至关重要的两个方面。传输层安全性&#xff08;TLS&#xff09;协议是实现安全传输的关键机制。然而&#xff0c;传统的TLS握手过程虽然安全&#xff0c;但是存在潜在的延迟问题。为了优化握手的效率&#xf…

5、docker-compose和docker-harbor

安装部署docker-compose 自动编排工具&#xff0c;可以根据dockerfile自动化的部署docker容器。是yaml文件格式&#xff0c;注意缩进。 1、安装docker-compose 2、配置compose配置文件docker-compose.yml 3、运行docker-compose.yml -f&#xff1a;指定文件&#xff0c;up&…

QNAP 上常用的几款软件

当我们谈到 NAS&#xff08;Network Attached Storage&#xff09;时&#xff0c;QNAP 凭借多年的产品迭代、稳定的硬件性能和不断丰富的软件生态&#xff0c;已成为很多家庭及中小型企业的首选。除了存储本身&#xff0c;QNAP 提供的各种官方软件和应用&#xff0c;也为用户带…

Jmeter进行http接口并发测试

目录&#xff1a; 1、Jmeter设置&#xff08;1&#xff09;设置请求并发数&#xff08;2&#xff09;设置请求地址以及参数&#xff08;3&#xff09;添加结果数 2、启动看结果 1、Jmeter设置 &#xff08;1&#xff09;设置请求并发数 &#xff08;2&#xff09;设置请求地址…

PHP与HTML、CSS、JavaScript、jQuery的关系**

在当今数字化的Web开发领域&#xff0c;PHP与HTML、CSS、JavaScript、jQuery各自扮演着重要的角色&#xff0c;并且它们之间存在着紧密而复杂的关系。 一、HTML与PHP的关系 HTML&#xff08;超文本标记语言&#xff09;是构建网页内容结构的基础。它定义了网页中的各种元素&a…

[笔记] VS Code 完全指南:快捷键速查手册 与 Vue 开发插件推荐

文章目录 一. Vue 开发插件推荐二. 快捷键速查手册1. 基础操作2. 基础编辑 Basic editing3. 导航 Navigation4. 搜索和替换 Search and replace5. 多光标和选择 Multi-cursor and selection6. 丰富的语言编辑 Rich languages editing7. 编辑器管理 Editor management8. 文件管理…

永久免费不限速下载器支持市面上大部分BT链接

该款鲨鱼下载器目前是市面上免费下载&#xff0c;且不限速的下载器个别的链接无法识别 官方QQ群857577200 下载链接 官网

混币器是什么,波卡跨链交易平台

混币器是什么 混币器是一种加密货币工具,主要功能是将用户的加密货币与其他众多用户的加密货币混合在一起,打乱资金的流向和交易痕迹,使得加密货币的来源和去向难以追踪,从而增加交易的匿名性和隐私性。以下是对其工作流程和相关举例的介绍: 工作流程 用户首先将自己的加…

9,STL——vector类

一、vector类的介绍和使用 1&#xff0c;了解vector vector类的官方介绍https://cplusplus.com/reference/vector/vector/ 使用STL的三个境界&#xff1a;能用&#xff0c;明理&#xff0c;能扩展 1). vector是表示可变大小数组的序列容器。 2). 就像数组一样&#xff0c;…

【Vue】let、const、var的区别、适用场景

let、const、var&#xff0c;有哪些区别&#xff0c;适用场景 var 特点&#xff1a; var 是 JavaScript 中最传统的变量声明方式。具有函数作用域&#xff0c;即在函数内声明的 var 变量&#xff0c;在整个函数内都可以访问。变量提升&#xff1a;使用 var 声明的变量会被提升…

Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例

Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例 1.代码在/kernel-5.10文件夹下 2.在kernel-5.10目录下执行如下命令编译 &#xff1a; 编译之前&#xff0c;需要将 clang 导出到 PATH 环境变量&#xff1a; 如果是 Android12 执行下面这条命令 export PATH../pr…

QT3学习之qpainter学习

QImage img;QPixmap savedPixmap(sourceRect.size());QPainter savedPainter(&savedPixmap);// 使用 QPainter 从 bufferPixmap 复制指定区域savedPainter.drawPixmap(sourceRect,bufferPixmap);// 将 QPixmap 转换为 QImageQImage image savedPixmap.convertToImage();if…

web.xml常用配置

web.xml是Java Web应用程序的部署描述文件&#xff0c;它位于WEB-INF目录下。web.xml文件主要用于配置Servlet、Filter、Listener、MIME类型、欢迎页面等组件&#xff0c;以及一些Web应用的上下文参数。以下是一些常见的web.xml配置说明&#xff1a; Servlet配置&#xff1a; …

基于考研概率论知识解读 Transformer:为何自注意力机制要除以根号 dk

Transformer自注意力机制中除以 d k \sqrt{d_k} dk​ ​深度剖析 【 Transformer 系列&#xff0c;故事从 d k \sqrt{d_k} dk​ ​说起】 LLM这么火&#xff0c;Transformer厥功甚伟&#xff0c;某天心血来潮~&#xff0c;再去看看&#xff01; 它长这个样子&#xff1a; 深入…

二进制、八进制、十进制和十六进制的相互转换

printf 函数 printf 函数是 C 语言中用于将格式化的数据输出到标准输出&#xff08;通常是屏幕&#xff09;的函数。它位于 stdio.h 头文件中&#xff0c;因此在使用之前需要包含该头文件。 printf 函数的格式说明符 格式说明符说明示例%d 或 %i输出或输入十进制有符号整数p…

Kafka权威指南(第2版)读书笔记

目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息 Kafka生产者——向Kafka写入数据 不管是把Kafka作为消息队列、消息总线还是数据存储平台&#xff0c;总是需要一个可以往Kafka写…