C语言-字符函数、字符串函数
目录字符函数字符分类函数字符转换函数字符串函数strcpy函数strcat函数strcmp函数长度受限制函数strstr函数strtok函数strerror函数perror函数字符函数字符函数包含在ctype.h头文件中可以找到这类函数。字符分类函数判断一个字符是否属于某一类字符若属于返回非0数若不属于返回0.字符分类函数有常用的判断字符大小写函数在代码中的使用如下#includestdio.h int main() { int a islower(A);//返回0 printf(%d\n, a); int b isupper(A);//返回非零数 printf(%d\n, b); return 0; }字符转换函数用于对字符类型的转换大部分字符分类函数都有对应的字符转换函数例如转换为大写字符的函数为toupper()字符转换函数不会对原字符进行改变会创建一个新的字符在代码中的的使用如下#includestdio.h int main() { char str[] Hello world; int i 0; while (str[i] ! \0) { if (islower(str[i])) { str[i] toupper(str[i]);//将小写字母转换为大写字母 } i; } printf(%s, str); return 0; }字符串函数字符串函数包含在头文件string.h中使用时需要包含头文件。strcpy函数用于对字符串的拷贝将一个字符串的内容拷贝给另一个字符串将“\0”以及之前的字符都拷贝过去形如char* strcpy(char* destination,const char* source);第一个参数是拷贝的目的地第二个参数是需要拷贝的源内容其返回值是目标内存空间的。在代码中的使用如下#includestdio.h #includestring.h int main() { char str[] abcde; char str1[] 777; char* p strcpy(str, str1); printf(%s\n, str); printf(%s\n, p);//调用函数返回值来打印字符串 return 0; }strcat函数字符串追加函数用于将一个字符串追加到另一个字符串后面其形式和strcpy函数基本一致“\0”也会追加目标字符串的空间要足够大否则会有警告在代码中的使用如下int main() { char str[20] abcde; char str1[] 77777; char* p strcat(str, str1); printf(%s\n, str); printf(%s\n, p); return 0; }strcmp函数字符串比较函数用于比较两个字符串的大小会从由左至右一个字符一个字符的挨着比较直到有不同的字符比较出大小了就直接退出其函数定义int strcmp(const char* str1,const char* str2),其返回值str1 str2时返回大于0的数str1 str2时返回0str1 str2时返回小于0的数在代码中的使用如下int main() { char str[] abcde; char str1[] abcf; int a strcmp(str, str1);//比较结果strstr1,返回值为-1 printf(%d\n, a); return 0; }上述三个函数为长度不受限制函数接下来的三个函数为长度受限制的函数长度受限制函数strncpystrncatstrncmp其功能与前面讲述的三个函数一样只是多了限位功能例如strncpy函数定义为char* strncpy(char* destination, const char* source,size_t num);(长度受限函数拷贝时不会拷贝“\0”,在拷贝数查出源字符数时会补“\0”),这三个函数在代码中的使用如下strncpyint main() { char str[] abcde; char str1[] qqq; char* a strncpy(str, str1,2); printf(%s\n, str); printf(%s\n,a) return 0; }strncatint main() { char str[20] abcde; char str1[] qqq; char* a strncat(str, str1,1);//在“abcde”后面加上一个“q” printf(%s\n, str); printf(%s\n, a); return 0; }strncmpint main() { char str[20] abcde; char str1[] abfys; int a strncmp(str, str1,2);//比较两个字符串前两字符strstr1返回值0 int b strncmp(str, str1, 3);//比较两个字符串前三字符strstr1返回值小于0 printf(%d\n, a); printf(%d\n, b); return 0; }strstr函数查找子字符串函数查找的时第一个出现的子字符串其返回值也是第一个出现的子字符串的首地址查不到时返回NULL.在代码中的使用如下int main() { char str[20] abcde; char str1[] cd; char* p strstr(str, str1);//在str中查找str1 if (p NULL) { printf(没有找到\n); } else { printf(找到了\n); printf(%s\n, p);//从找到子字符串的首地址处开始打印字符串这里输出cde } return 0; }strtok函数分割字符串函数函数定义char* strtok(char* str,const char* delim);第一个参数是字符串第二个人参数是分割符返回值成功分割时返回分割字符串的首地址分割完成后返回NULL首次调用时传入待分割字符串和分割符后续调用时传入NULL和相同分割符继续分割当函数返回NULL时表示分割完成。PS该函数会直接修改源字符串数据因此使用时最好备份一份用备份的子符串进行分割当两个及以上分割符挨着一起时会当作一个分割符处理第一次调用函数时不能传入NULL在代码中的使用如下int main() { char str[20] abc.ags%slks.asw; char str1[] .%; for (char* p strtok(str, str1);p ! NULL;p strtok(NULL, str1))//配合for循环使用 { printf(%s\n, p); } return 0; }strerror函数函数定义char* strerror (int errnum);可以通过errnum表示的错误码得到错误信息并返回这个错误信息的首字符地址在程序运行时会自动创建全局变量errno,用于存放错误信息码使用时需要包含头文件errno.h,在代码中的使用如下#includestdio.h #includestring.h #includeerrno.h int main() { int i 0; for (i 0;i 10;i) { printf(%s\n, strerror(errno)); } return 0; }perror函数用于打印程序错误信息函数定义为void perror(const char* str);函数的参数为自定义字符串运行时会先打印自定义的字符串再打印程序错误信息相当于printf()strerror()的功能在代码中的使用如下#includestdio.h #includestring.h int main() { perror(错误信息为); return 0; }

相关新闻

电子开关电路设计:三极管与MOS管选型、驱动与实战详解

电子开关电路设计:三极管与MOS管选型、驱动与实战详解

1. 项目概述:从“开关”这个基础需求说起在电子电路设计里,用半导体器件当“开关”来控制一个负载的通断,可以说是最基础、最频繁遇到的需求之一。无论是点亮一个LED,驱动一个继电器,还是控制一个电机,本质…

2026/9/22 7:23:18 阅读更多 →
如何实现TikTok Shop批量抓取采集自动化?C++底层指纹伪装,抹除自动化特征

如何实现TikTok Shop批量抓取采集自动化?C++底层指纹伪装,抹除自动化特征

如何实现TikTok Shop批量抓取采集自动化?C底层指纹伪装,抹除自动化特征 搞店群运营这行,TikTok Shop的批量抓取采集,是店群运营中最耗人力也最容易出错的环节。 采集竞品数据是店群运营的命脉。但各大平台的反爬系统越来越强&am…

2026/9/24 17:07:47 阅读更多 →
如何实现TEMU多店防关联管理自动化?单机管理200+店铺零关联的底层架构

如何实现TEMU多店防关联管理自动化?单机管理200+店铺零关联的底层架构

如何实现TEMU多店防关联管理自动化?单机管理200店铺零关联的底层架构 干店群想赚钱,核心就两个字——效率。TEMU的多店防关联管理,是店群运营中最耗人力也最容易出错的环节。 做店群的老板都知道,最怕的就是底层IP和硬件指纹穿帮…

2026/9/24 5:04:32 阅读更多 →

最新新闻

ctf-wiki 橢圓曲線加密(ECC)從入門到實戰:離散對數基礎、ElGamal 方案與 SECCON CTF 破解

ctf-wiki 橢圓曲線加密(ECC)從入門到實戰:離散對數基礎、ElGamal 方案與 SECCON CTF 破解

文档网络安全教程 【免费下载链接】ctf-wiki Come and join us, we need you! 项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki 点击查看 免费下载 本篇技術指南以 ctf-wiki 的 ecc.md 為主體,系統梳理橢圓曲線加密(Elliptic Curve C…

2026/9/25 2:49:25 阅读更多 →
swagger-codegen 生成的 Java 只读模型文档解读:以 okhttp-gson-parcelableModel 的 HasOnlyReadOnly 为例

swagger-codegen 生成的 Java 只读模型文档解读:以 okhttp-gson-parcelableModel 的 HasOnlyReadOnly 为例

开发工具代码生成API设计 【免费下载链接】swagger-codegen swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. 项目地址: http…

2026/9/25 2:49:25 阅读更多 →
TypeResolver 入门指南:基于 PSR-5 的 PHP 类型与 FQSEN 解析实战

TypeResolver 入门指南:基于 PSR-5 的 PHP 类型与 FQSEN 解析实战

开发工具静态分析 【免费下载链接】TypeResolver A PSR-5 based resolver of Class names, Types and Structural Element Names 项目地址: https://gitcode.com/gh_mirrors/ty/TypeResolver 点击查看 免费下载 本文是一份面向 PHP 开发者的 TypeResolver 上手指南…

2026/9/25 2:49:24 阅读更多 →
Apereo CAS Standalone 配置模式全解:外部化配置目录、文件加载顺序与覆盖策略

Apereo CAS Standalone 配置模式全解:外部化配置目录、文件加载顺序与覆盖策略

后端认证鉴权单点登录 【免费下载链接】cas Apereo CAS - Identity & Single Sign On for all earthlings and beyond. 项目地址: https://gitcode.com/gh_mirrors/ca/cas 点击查看 免费下载 导读:本文深入讲解 Apereo CAS 默认的 Standalone&#…

2026/9/25 2:49:24 阅读更多 →
企业采购矩阵工具:版本选型需要考量哪些核心要素?

企业采购矩阵工具:版本选型需要考量哪些核心要素?

很多企业做线上内容矩阵运营,在挑选矩阵管理工具的时候,很容易陷入只看价格、只对比基础功能的误区。不少运营负责人采购后才发现,版本不匹配团队规模、账号上限不够、缺少内容分发或者数据汇总能力,后续升级还要额外付费&#xf…

2026/9/25 2:49:23 阅读更多 →
EasyWeChat 6.x 开放平台第三方平台实战示例:从推送事件接收、预授权到代公众号/小程序调用

EasyWeChat 6.x 开放平台第三方平台实战示例:从推送事件接收、预授权到代公众号/小程序调用

后端即时通讯 【免费下载链接】easywechat 📦 一个 PHP 微信 SDK 项目地址: https://gitcode.com/gh_mirrors/ea/easywechat 点击查看 免费下载 本篇基于 EasyWeChat 6.x(PHP 微信 SDK)的开放平台第三方平台模块,围绕…

2026/9/25 2:48:22 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →