C语言 字符串处理相关函数大汇总之(11~15)

11,strtok函数,用于将字符串按照指定的分隔符进行分割。

strtok 函数在首次调用时需要传入待分割的字符串和分隔符,之后的连续调用只需要传入 NULL 作为第一个参数即可继续上一次的分割。函数原型如下:

char *strtok(char *str, const char *delim);

参数说明:

  • str:待分割的字符串。在首次调用 strtok 时,需要传入待分割的字符串;在连续调用时,传入 NULL
  • delim:分隔符字符串,包含一组用作分隔符的字符。

返回值:

  • 当成功找到子串时,返回指向该子串的指针。
  • 当没有更多子串可供返回时,返回 NULL

注意事项:

  1. strtok 函数会修改原始字符串,将其拆分为子串。因此,在使用 strtok 之前,请确保原始字符串是可修改的。
  2. strtok 函数是非重入(non-reentrant)的,因为它使用静态缓冲区来存储上一次调用的状态。这意味着在多线程环境中使用 strtok 可能会导致问题。在这种情况下,可以考虑使用线程安全的替代函数,如 strtok_r

下面是一个简单的示例,展示如何使用 strtok 函数:

#include <stdio.h>  
#include <string.h>  int main() {  char input[] = "This,is,a,test.";  const char *delimiter = ",";  char *token;  /* 获取第一个子串 */  token = strtok(input, delimiter);  while (token != NULL) {  printf("%s\n", token);  /* 获取下一个子串 */  token = strtok(NULL, delimiter);  }  return 0;  
}

在这个示例中,我们使用逗号作为分隔符来分割字符串 "This,is,a,test."。程序会输出:

This  
is  
a  
test.

12,atoi 函数,将字符串转整数。

函数原型:

int atoi(const char *str);

参数:

  • str:要转换的字符串。

返回值:

  • 如果字符串表示的数字在 int 类型的范围内,则返回对应的整数值。
  • 如果字符串表示的数字超出了 int 类型的范围,则返回 INT_MAX 或 INT_MIN(取决于超出的方向)。
  • 如果字符串不包含数字字符,则返回 0。
  • 如果字符串为空指针,则行为是未定义的。

示例:

#include <stdio.h>  
#include <stdlib.h>  int main() {  const char *str = "123";  int num = atoi(str);  printf("Number: %d\n", num);  // 输出: Number: 123  return 0;  
}

        请注意,atoi 函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用 strtol 或 sscanf 等函数。

13,atof 函数,将字符串转float类型的数据。

函数原型:

double atof(const char *str);

参数:

  • str:要转换的字符串。

返回值:

  • 如果字符串表示的数字在 double 类型的范围内,则返回对应的浮点数值。
  • 如果字符串表示的数字超出了 double 类型的范围,则返回 HUGE_VAL 或 -HUGE_VAL(取决于超出的方向)。
  • 如果字符串不包含数字字符,则返回 0.0。
  • 如果字符串为空指针,则行为是未定义的。

示例:

#include <stdio.h>  
#include <stdlib.h>  int main() {  const char *str = "3.14";  double num = atof(str);  printf("Number: %f\n", num);  // 输出: Number: 3.140000  return 0;  
}

        同样地,atof 函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用 strtod 或 sscanf 等函数。

14,atol 函数,将字符串转long类型的数据。

函数原型:

long atol(const char *str);

参数:

  • str:要转换的字符串。

返回值:

  • 如果字符串表示的数字在 long int 类型的范围内,则返回对应的整数值。
  • 如果字符串表示的数字超出了 long int 类型的范围,则返回 LONG_MAX 或 LONG_MIN(取决于超出的方向)。
  • 如果字符串不包含数字字符,则返回 0。
  • 如果字符串为空指针,则行为是未定义的。

示例:

#include <stdio.h>  
#include <stdlib.h>  int main() {  const char *str = "12345";  long int num = atol(str);  printf("Number: %ld\n", num);  // 输出: Number: 12345  return 0;  
}

        同样地,atol 函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用 strtol 或 sscanf 等函数。

15,atoll 函数,将字符串转long long类型的数据。

函数原型:

long long int atoll(const char *str);

参数:

  • str:要转换的字符串。

返回值:

  • 如果字符串表示的数字在 long long int 类型的范围内,则返回对应的整数值。
  • 如果字符串表示的数字超出了 long long int 类型的范围,则返回 LLONG_MAX 或 LLONG_MIN(取决于超出的方向)。
  • 如果字符串不包含数字字符,则返回 0。
  • 如果字符串为空指针,则行为是未定义的。

示例:

#include <stdio.h>  
#include <stdlib.h>  int main() {  const char *str = "123456789012";  long long int num = atoll(str);  printf("Number: %lld\n", num);  // 输出: Number: 123456789012  return 0;  
}

        同样地,atoll 函数在转换过程中不会进行错误检查,因此在使用它之前,最好确保输入的字符串确实包含有效的数字字符。如果需要更健壮的转换函数,可以考虑使用 strtoll 或 sscanf 等函数。

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

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

相关文章

rust热门前后端框架

Rust 生态系统中有一些开源的热门框架可用于开发前后端应用程序。以下是几个广受欢迎的 Rust 框架&#xff1a; 1. **Rocket&#xff1a;** Rocket 是一个简单、易用且高度可定制的 Web 框架&#xff0c;适用于构建后端应用程序。它提供了路由、请求和响应处理、模板引擎等功能…

认识YAML和Propertis

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

深度学习 Day21——J1ResNet-50算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;3.导入数据4.查…

Qt中多线程使用案列

Qt中多线程下载大文件 #pragma once#include <QWidget> #include <QPushButton> #include "ThreadPool.h" #include <QProgressBar> #include <QLabel> #include <QHBoxLayout> #include <QVBoxLayout> class MainWindow : pub…

el-table 实现行拖拽排序

element ui 表格实现拖拽排序的功能&#xff0c;可以借助第三方插件Sortablejs来实现。 引入sortablejs npm install sortablejs --save组件中使用 import Sortable from sortablejs;<el-table ref"el-table":data"listData" row-key"id" …

【C++】new 和 delete

目录 一 引言 二 new 三 delete 四 new和delete操作自定义类型 五 operator new与operator delete函数 六 new和delete的实现原理 1 内置类型 2 自定义类型 1 new的原理 2 delete的原理 3 new T[N]的原理 4 delete[]的原理 七 定位new表达式(placement-new) 八 …

如何使用Docker搭建青龙面板并结合内网穿透工具发布至公网可访问

文章目录 一、前期准备本教程环境为&#xff1a;Centos7&#xff0c;可以跑Docker的系统都可以使用。本教程使用Docker部署青龙&#xff0c;如何安装Docker详见&#xff1a; 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 正文…

期货高低板(期货价格飘升,市场掀起高低潮流)

什么是期货高低板&#xff1f; 期货是由交易所统一交易的标准化合约&#xff0c;商品的价格是通过供求关系来决定的。高低板则是期货交易中的常见现象&#xff0c;它表示了在交易过程中&#xff0c;价格波动超过了可设定的最高或最低价&#xff0c;于是交易系统便会出现高板或…

Wireshark基础及捕获技巧

第一章&#xff1a;Wireshark基础及捕获技巧 1.1 Wireshark基础知识回顾 1.2 高级捕获技巧&#xff1a;过滤器和捕获选项 1.3 Wireshark与其他抓包工具的比较 第二章&#xff1a;网络协议分析 2.1 网络协议分析&#xff1a;TCP、UDP、ICMP等 2.2 高级协议分析&#xff1a;HTTP…

【力扣100】102.二叉树的层序遍历

添加链接描述 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def levelOrder(self, root: Optional[TreeN…

​Halcon机器视觉软件学习指南

引言 Halcon是由德国MVTec软件公司开发的一款领先的机器视觉软件&#xff0c;广泛应用于工业检测、图像分析、医疗图像处理等领域。对于大学生和初学者而言&#xff0c;学习Halcon不仅能够提升技术层面的能力&#xff0c;还能够增强未来的就业竞争力。本文将为您提供一个系统的…

Git 储藏(stash)用法

储藏的基本用法 保存当前的更改 1、查看储藏 git stash list2、更改保存到一个储藏中&#xff1a; git stash save "info"其中&#xff0c;“info” 是可选的注释信息&#xff0c;可以简要描述这个储藏的内容。 3、恢复之前保存的更改 可以使用下面的命令将之前…

安全狗云原生安全-云甲·云原生容器安全管理系统

随着云计算的快速发展&#xff0c;容器技术逐渐成为主流。然而&#xff0c;随着容器的普及&#xff0c;安全问题也日益突出。为了解决这一问题&#xff0c;安全狗推出了云原生容器安全管理系统——云甲。 云甲是安全狗云原生安全的重要组成部分&#xff0c;它采用了先进的云原生…

Jenkins 构建环境指南

目录 Delete workspace before build starts&#xff08;常用&#xff09; Use secret text(s) or file(s) &#xff08;常用&#xff09; Add timestamps to the Console Output &#xff08;常用&#xff09; Inspect build log for published build scans Terminate a …

什么是“人机协同”机器学习?

“人机协同”&#xff08;HITL&#xff09;是人工智能的一个分支&#xff0c;它同时利用人类智能和机器智能来创建机器学习模型。在传统的“人机协同”方法中&#xff0c;人们会参与一个良性循环&#xff0c;在其中训练、调整和测试特定算法。通常&#xff0c;它的工作方式如下…

vscode开发python环境配置

前言 vscode作为一款好用的轻量级代码编辑器&#xff0c;不仅支持代码调试&#xff0c;而且还有丰富的插件库&#xff0c;可以说是免费好用&#xff0c;对于初学者来说用来写写python是再合适不过了。下面就推荐几款个人觉得还不错的插件&#xff0c;希望可以帮助大家更好地写…

亚信安慧AntDB:支撑中国广电5G业务的数据库之力

自2019年6月获得5G牌照以来&#xff0c;中国广电积极利用700MHz频谱资源&#xff0c;迅速崛起为第四大运营商&#xff0c;标志着其在数字通信领域取得的巨大成就。通过与中国移动紧密合作&#xff0c;共建共享基站已超过400万座&#xff0c;为实现自主运营和差异化竞争提供了坚…

windows和linux将文件删除至回收站【C++】【Go】语言实现

目录 C Windows平台 Linux平台 开平台&#xff0c;代码合并 Go 实现步骤 Go语言实现示例 go单独的windows版本实现 代码解释 C 在C中&#xff0c;将文件移动到回收站的实现在Linux和Windows平台上是不同的。首先&#xff0c;我会为你提供在Windows平台上实现的代码示例…

淘宝商品评论:商家了解市场趋势和竞争状况的窗口

淘宝商品评论是消费者对购买商品的反馈和评价&#xff0c;是商家了解市场趋势、消费者需求以及竞争状况的重要窗口。通过对商品评论的深入研究和分析&#xff0c;商家可以获取有价值的市场信息和用户需求&#xff0c;从而调整产品策略、优化营销方案以及制定更具针对性的市场竞…

飞书+ChatGPT搭建智能AI助手,无公网ip实现公网访问飞书聊天界面

飞书ChatGPT搭建智能AI助手&#xff0c;无公网ip实现公网访问飞书聊天界面 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 …