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

常见string库中的函数(C语言超详细)

文章目录

  • strcspn
  • strcpy
  • strncpy
  • strcat
  • strncat
  • strcmp
  • strncmp
  • strchr
  • strrchr
  • strstr
  • strtok
  • strlen
  • strnlen

strcspn

原型:

size_t strcspn(const char *str1, const char *str2);

功能:

strcspn 会扫描 str1,并返回一个整数,表示 str1 中第一个匹配 str2 中任意字符的位置(从 0开始计数)。如果没有匹配的字符,返回 str1 的长度

注意事项

空字符集:如果 str2 为空字符串,返回 str1 的长度。
无匹配字符:如果 str1 中没有任何字符与 str2 匹配,返回 str1的长度。
按顺序匹配:str2 中的字符按顺序匹配 str1 中的字符,找到第一个匹配即可

strcpy

原型:

char* strcpy(char* dest, const char* src);

功能:

strcpy函数将src字符串(包括终止的空字符’\0’)复制到dest所指向的内存区域。

注意事项:

确保dest有足够的空间来容纳src字符串,包括终止的空字符,否则会导致缓冲区溢出。 src和dest不能指向相同的内存区域。

strncpy

原型:

char* strncpy(char* dest, const char* src, size_t n);

功能:

strncpy函数将src字符串的前n个字节复制到dest所指向的内存区域。如果src字符串的长度小于n,则剩余的字节用空字符’\0’填充。

注意事项:

如果src字符串的长度大于或等于n,dest可能不会以空字符终止,这可能导致后续操作出现问题。
使用strncpy时需要特别小心,确保dest字符串以空字符终止。

strcat

原型:

char* strcat(char* dest, const char* src);

功能:

strcat函数将src字符串(包括终止的空字符’\0’)追加到dest字符串的末尾。

注意事项:

确保dest有足够的空间来容纳追加的src字符串,包括终止的空字符,否则会导致缓冲区溢出。 dest必须是一个空终止的字符串。

strncat

原型:

char* strncat(char* dest, const char* src, size_t n);

功能:

strncat函数将src字符串的前n个字节追加到dest字符串的末尾,并确保dest以空字符终止。

注意事项:

如果src字符串的长度小于n,dest将包含src的所有字符,并以空字符终止。
如果src字符串的长度大于或等于n,dest将包含src的前n个字节,并以空字符终止。

strcmp

原型:

int strcmp(const char* str1, const char* str2);

功能:

strcmp函数比较两个字符串str1和str2,按照字典顺序返回比较结果。

返回值小于0表示str1小于str2
返回值等于0表示str1等于str2
返回值大于0表示str1大于str2

注意事项:

比较是基于字符的ASCII值。
比较直到遇到第一个不匹配的字符或遇到空字符’\0’。

strncmp

原型:

int strncmp(const char* str1, const char* str2, size_t n);

功能:

strncmp函数比较两个字符串str1和str2的前n个字节,按照字典顺序返回比较结果。

返回值小于0表示str1的前n个字节小于str2的前n个字节
返回值等于0表示str1的前n个字节等于str2的前n个字节
返回值大于0表示str1的前n个字节大于str2的前n个字节

注意事项:

比较的是前n个字节,不考虑字符串的实际长度。 如果n为0,返回0。

strchr

原型:

char* strchr(const char* str, int ch);

功能:

strchr函数在字符串str中查找第一个等于ch的字符,并返回指向该字符的指针。如果未找到,返回NULL。

注意事项:

ch参数是一个int,但实际上只使用其最低字节,并且被转换为unsigned char进行比较。 查找包括字符串的终止空字符’\0’。

strrchr

原型:

char* strrchr(const char* str, int ch);

功能:

strrchr函数在字符串str中查找最后一个等于ch的字符,并返回指向该字符的指针。如果未找到,返回NULL。

注意事项:

ch参数同strchr。 同样包括字符串的终止空字符’\0’。

strstr

原型:

char* strstr(const char* haystack, const char* needle);

功能:

strstr函数在字符串haystack中查找第一个出现的子字符串needle,并返回指向该子字符串起始位置的指针。如果未找到,返回NULL。

注意事项:

查找是基于字节的精确匹配。 needle可以是空字符串,此时返回haystack本身。

strtok

原型:

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

功能:

strtok函数用于将字符串str分割为多个 tokens,根据delim参数指定的分隔符。

使用方法:

第一次调用strtok时,str指向要分割的字符串,delim指定分隔符。
后续调用strtok时,str设为NULL,继续从前一次返回的位置开始分割。

注意事项:

strtok修改原始字符串,在字符串中插入空字符’\0’来分割tokens。
不是线程安全的,因为它使用静态变量保存状态。

strlen

原型:

size_t strlen(const char* str);

功能:

strlen函数计算字符串str的长度,不包括终止的空字符’\0’。

注意事项:

直到遇到第一个空字符’\0’才停止计数。 如果字符串没有终止的空字符,行为未定义。

strnlen

原型:

size_t strnlen(const char* str, size_t maxlen);

功能:

strnlen函数计算字符串str的长度,最多检查maxlen个字节,返回实际的长度,不包括终止的空字符’\0’。

注意事项:

如果在maxlen字节内找不到空字符’\0’,返回maxlen。
这是一个安全的版本,避免了潜在的缓冲区溢出。

相关文章:

常见string库中的函数(C语言超详细)

文章目录 strcspnstrcpystrncpystrcatstrncatstrcmpstrncmpstrchrstrrchrstrstrstrtokstrlenstrnlen strcspn 原型: size_t strcspn(const char *str1, const char *str2);功能: strcspn 会扫描 str1,并返回一个整数,表示 str1 中第一个匹配…...

单例模式几种实现

静态内部类holder实现(推荐) public class UniqueIdGenerator {public static final UniqueIdGenerator INSTANCE Holder.INSTANCE;// Private holder class for lazy initializationprivate static class Holder {static final UniqueIdGenerator INS…...

android中关于CheckBox自定义选中图片选中无效问题

在android xml 布局中&#xff0c;使用CheckBox控件设置选中背景图代码如下 <CheckBoxandroid:layout_width"wrap_content"android:layout_height"wrap_content"android:button"drawable/dfrd_common_selecotr_check"android:paddingStart&q…...

虚拟局域网之详解(Detailed Explanation of Virtual Local Area Network)

虚拟局域网之详解 VLAN (virtual localArea network)是一种虚拟局域网技术&#xff0c;它可以将一个物理局域网划分为多个逻辑上的虚拟局域网。 基于交换式以太网的虚拟局域网在交换式以太网中&#xff0c;利用VLAN技术&#xff0c;可以将由交换机连接成的物理网络划分成多个…...

双亲委派(JVM)

1.双亲委派 在 Java 中&#xff0c;双薪委派通常是指双亲委派模型&#xff0c;它是 Java 类加载器的一种工作模式&#xff0c;用于确保类加载的安全性和一致性。以下是其相关介绍&#xff1a; 定义与作用 定义&#xff1a;双亲委派模型要求除了顶层的启动类加载器外&#xf…...

第二十一章:考研的艰难抉择与放弃入学的转折

深秋时节&#xff0c;校园宛如被大自然精心雕琢的艺术殿堂。金黄的银杏叶在阳光的轻抚下&#xff0c;闪烁着细碎的光芒&#xff0c;微风拂过&#xff0c;叶片相互摩挲&#xff0c;发出沙沙的轻响&#xff0c;仿佛在低声诉说着岁月的故事。一片片银杏叶悠悠然飘落&#xff0c;宛…...

webpack配置之---output.chunkLoading

output.chunkLoading webpack.output.chunkLoading 配置项用于指定 Webpack 如何加载异步 chunk&#xff08;即按需加载的代码块&#xff09;。在现代 Webpack 版本中&#xff0c;异步代码分割成为了非常常见的功能&#xff0c;chunkLoading 配置项就用于控制 Webpack 加载这些…...

升级RAG应用程序与Redis向量库

Redis Vector Library (RedisVL) 简化AI应用开发 几个月前&#xff0c;Redis推出了Redis向量库&#xff08;RedisVL&#xff09;&#xff0c;以简化人工智能&#xff08;AI&#xff09;应用的开发。自那时起&#xff0c;我们引入了强大的新功能&#xff0c;支持大规模的语言模…...

【starrocks学习】之将starrocks表同步到hive

目录 方法 1&#xff1a;通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2&#xff1a;使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3&#xff1a;通过…...

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从盒马…...

openEuler部署 sysstat工具

查看环境 [rootlocalhost lxm]# cat /etc/os-release NAME"openEuler" VERSION"23.09" ID"openEuler" VERSION_ID"23.09" PRETTY_NAME"openEuler 23.09" ANSI_COLOR"0;31"查看 yum 源 [rootlocalhost lxm]# he…...

使用 Three.js 实现炫酷的除夕烟花特效

1&#xff0c;前言 在除夕夜&#xff0c;璀璨的烟花点亮夜空&#xff0c;为节日增添了浓厚的喜庆氛围。在 Web 端&#xff0c;我们可以使用 Three.js 来模拟这种美轮美奂的烟花特效&#xff0c;让网页也能展现绚丽的节日气息。本文将介绍如何利用 Three.js 及其着色器技术&…...

LMM-3DP:集成 LMM 规划器和 3D 技能策略实现可泛化操作

25年1月来自UCSD的论文“Integrating LMM Planners and 3D Skill Policies for Generalizable Manipulation”。 大型多模态模型 (LMM) 的视觉推理能力和 3D 特征场语义丰富性的最新进展&#xff0c;拓展了机器人能力的范围。这些发展对于弥合 LMM 高级推理与利用 3D 特征场低…...

Linux——基础命令3

1、关机重启命令 reboot指令 作用&#xff1a;重启计算机 语法&#xff1a;reboot shutdown指令 作用&#xff1a;关机 语法&#xff1a;shutdown -h 时间 时间常见的值&#xff1a; now &#xff08;立即关机&#xff09; m&#xff08;m表示minutes数字&#xff09;eg&…...

ChatGPT提问技巧:行业热门应用提示词案例-文案写作

ChatGPT 作为强大的 AI 语言模型&#xff0c;已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案&#xff0c;关键在于如何与它“沟通”&#xff0c;也就是如何设计提示词&#xff08;Prompt&#xff09;。以下是一些实用的提示词案例&#xff0c;帮助你解锁 ChatG…...

python - 封装moondream(备份)

目录 一、 moondream封装成类 二、moondream封装成http api 一、 moondream封装成类 # moondream_model.py #https://github.com/vikhyat/moondream?tab=readme-ov-fileimport moondream as md from PIL import Imageclass MoondreamModel:def __init__(self, model_path):…...

响应式编程库(三) -r2dbc

r2dbc整合 什么是r2dbc版本选择简单试用整合springbootDatabaseClient 进行查询使用Repository接口(对应mapper)实体类复杂查询&#xff08;一对一&#xff09;实体类转换器测试代码一对多关系 什么是r2dbc 反应式关系数据库连接&#xff08;R2DBC&#xff09;项目为关系数据库…...

嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

2025年&#xff0c;全球AI领域最震撼的突破并非来自算力堆叠的超级模型&#xff0c;而是中国团队DeepSeek通过开源策略&#xff0c;推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言&#xff0c;被称作“核弹级别”的操…...

基于遗传算法的64QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; GA优化过程&#xff1a; 优化前后星座图对比&#xff1a; &#xff08;优化后…...

从零开始玩转Docker:轻松开启容器化之旅

一、什么是 Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。简单来说&#xff0c;Docker 就像是一个超级 “快递箱”&#xff0c…...

Python 爬虫反爬突破:CDN 防护节点穿透采集

前言 当下大型互联网站点、电商平台资讯门户、行业数据网站均全面接入 CDN 内容分发网络&#xff0c;借助全球节点缓存、流量调度、智能分流、节点 IP 隐身、区域访问限制等机制构建底层防护体系。传统爬虫直接请求源站 IP 的方式会被 CDN 节点拦截、跳转、限速、IP 封禁、节点…...

STM32F103C8T6与DHT11单总线通信:从时序解析到数据校验的实战指南

1. 认识STM32F103C8T6与DHT11这对黄金搭档 第一次接触嵌入式开发的朋友可能会觉得&#xff0c;让单片机读取温湿度数据是个复杂的事情。但当你用STM32F103C8T6这颗性价比超高的Cortex-M3内核芯片&#xff0c;搭配DHT11这个经典温湿度传感器时&#xff0c;事情就变得简单多了。…...

京东自动评价终极指南:如何用Python脚本轻松完成批量评价

京东自动评价终极指南&#xff1a;如何用Python脚本轻松完成批量评价 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 还在为京东购物后的繁琐评价工作烦恼吗&#xff1f;每次大促后面对几十个…...

别再只会addItem了!QT QComboBox的5个高级用法与实战场景(含完整代码)

别再只会addItem了&#xff01;QT QComboBox的5个高级用法与实战场景&#xff08;含完整代码&#xff09; 在QT开发中&#xff0c;QComboBox可能是最容易被低估的控件之一。很多开发者仅仅把它当作一个简单的下拉选择框&#xff0c;用addItem()填充几个静态选项就草草了事。但实…...

【AI面试临阵磨枪-54】如何监控 AI 系统:成功率、延迟、Token 消耗、幻觉率、调用量

一、 面试题目面试官提问&#xff1a; “在大规模 Agent 系统中&#xff0c;你是如何建立监控体系的&#xff1f;请针对 成功率、延迟、Token 消耗、幻觉率、调用量 这五个核心指标&#xff0c;详细谈谈你的采集、分析与预警方案。”二、 知识储备1. 核心背景&#xff1a;AI 监…...

构建AI长短期记忆系统:从向量检索到混合架构的工程实践

1. 项目概述&#xff1a;当AI开始拥有“记忆”最近在折腾一个挺有意思的东西&#xff0c;我把它叫做“Memory Bear”。这名字听起来有点萌&#xff0c;但内核其实挺硬核的。简单来说&#xff0c;它不是一个具体的产品&#xff0c;而是一套关于如何让AI系统拥有更接近人类“记忆…...

Go-sniffer高级用法指南:自定义过滤规则和协议扩展开发终极教程

Go-sniffer高级用法指南&#xff1a;自定义过滤规则和协议扩展开发终极教程 【免费下载链接】go-sniffer 项目地址: https://gitcode.com/gh_mirrors/go/go-sniffer Go-sniffer是一款功能强大的网络嗅探工具&#xff0c;专为开发者和运维人员设计&#xff0c;能够实时抓…...

保姆级教程:用正点原子MFG_TOOL给I.MX6U开发板烧录出厂系统(附常见问题排查)

嵌入式Linux开发板系统烧录全流程指南&#xff1a;从零开始到成功启动 第一次拿到嵌入式开发板时的兴奋感&#xff0c;往往会被复杂的系统烧录过程冲淡不少。特别是对于刚接触嵌入式Linux的开发者来说&#xff0c;如何把系统镜像正确烧录到开发板上&#xff0c;常常成为第一个需…...

Tinke完整技术指南:NDS游戏资源提取与逆向工程深度解析

Tinke完整技术指南&#xff1a;NDS游戏资源提取与逆向工程深度解析 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke Tinke是一款专业的任天堂DS&#xff08;NDS&#xff09;游戏资源提取与逆向工程…...

企业安全运维:轻量级OpenClaw检测脚本的设计、部署与MDM集成实战

1. 项目概述&#xff1a;为什么我们需要一个轻量级的OpenClaw检测脚本&#xff1f;在当今的企业IT环境中&#xff0c;开发工具和AI辅助编程代理的普及带来了前所未有的效率提升&#xff0c;但同时也引入了新的安全与合规盲区。想象一下&#xff0c;一个未经批准的开发工具&…...