常见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 布局中,使用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)是一种虚拟局域网技术,它可以将一个物理局域网划分为多个逻辑上的虚拟局域网。 基于交换式以太网的虚拟局域网在交换式以太网中,利用VLAN技术,可以将由交换机连接成的物理网络划分成多个…...
双亲委派(JVM)
1.双亲委派 在 Java 中,双薪委派通常是指双亲委派模型,它是 Java 类加载器的一种工作模式,用于确保类加载的安全性和一致性。以下是其相关介绍: 定义与作用 定义:双亲委派模型要求除了顶层的启动类加载器外…...
第二十一章:考研的艰难抉择与放弃入学的转折
深秋时节,校园宛如被大自然精心雕琢的艺术殿堂。金黄的银杏叶在阳光的轻抚下,闪烁着细碎的光芒,微风拂过,叶片相互摩挲,发出沙沙的轻响,仿佛在低声诉说着岁月的故事。一片片银杏叶悠悠然飘落,宛…...
webpack配置之---output.chunkLoading
output.chunkLoading webpack.output.chunkLoading 配置项用于指定 Webpack 如何加载异步 chunk(即按需加载的代码块)。在现代 Webpack 版本中,异步代码分割成为了非常常见的功能,chunkLoading 配置项就用于控制 Webpack 加载这些…...
升级RAG应用程序与Redis向量库
Redis Vector Library (RedisVL) 简化AI应用开发 几个月前,Redis推出了Redis向量库(RedisVL),以简化人工智能(AI)应用的开发。自那时起,我们引入了强大的新功能,支持大规模的语言模…...
【starrocks学习】之将starrocks表同步到hive
目录 方法 1:通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2:使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3:通过…...
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,前言 在除夕夜,璀璨的烟花点亮夜空,为节日增添了浓厚的喜庆氛围。在 Web 端,我们可以使用 Three.js 来模拟这种美轮美奂的烟花特效,让网页也能展现绚丽的节日气息。本文将介绍如何利用 Three.js 及其着色器技术&…...
LMM-3DP:集成 LMM 规划器和 3D 技能策略实现可泛化操作
25年1月来自UCSD的论文“Integrating LMM Planners and 3D Skill Policies for Generalizable Manipulation”。 大型多模态模型 (LMM) 的视觉推理能力和 3D 特征场语义丰富性的最新进展,拓展了机器人能力的范围。这些发展对于弥合 LMM 高级推理与利用 3D 特征场低…...
Linux——基础命令3
1、关机重启命令 reboot指令 作用:重启计算机 语法:reboot shutdown指令 作用:关机 语法:shutdown -h 时间 时间常见的值: now (立即关机) m(m表示minutes数字)eg&…...
ChatGPT提问技巧:行业热门应用提示词案例-文案写作
ChatGPT 作为强大的 AI 语言模型,已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案,关键在于如何与它“沟通”,也就是如何设计提示词(Prompt)。以下是一些实用的提示词案例,帮助你解锁 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)实体类复杂查询(一对一)实体类转换器测试代码一对多关系 什么是r2dbc 反应式关系数据库连接(R2DBC)项目为关系数据库…...
嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?
2025年,全球AI领域最震撼的突破并非来自算力堆叠的超级模型,而是中国团队DeepSeek通过开源策略,推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言,被称作“核弹级别”的操…...
基于遗传算法的64QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): GA优化过程: 优化前后星座图对比: (优化后…...
从零开始玩转Docker:轻松开启容器化之旅
一、什么是 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。简单来说,Docker 就像是一个超级 “快递箱”,…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
