C语言字符串详解:从基础到常用函数
📅 2026/8/1 18:58:58
👁️ 次浏览
1. C语言字符串基础在C语言中字符串实际上是使用空字符\0结尾的一维字符数组。空字符Null character又称结束符缩写NUL是一个数值为0的控制字符。\0是转义字符告诉编译器这不是字符0而是空字符。1.1 字符串的声明与初始化下面的声明和初始化创建了一个RUNOOB字符串。由于在数组末尾存储了空字符\0所以字符数组的大小比单词RUNOOB的字符数多一个char site[7] {R, U, N, O, O, B, \0};依据数组初始化规则可以简写为char site[] RUNOOB;实际上C编译器会在初始化数组时自动把\0放在字符串的末尾所以不需要手动添加。1.2 字符串的内存表示以下是C/C中字符串的内存表示// 内存布局示例 // char str[] Hello; // 内存: | H | e | l | l | o | \0 | // 索引: 0 1 2 3 4 51.3 字符串输出示例让我们尝试输出上面的字符串#include stdio.h int main() { char site[7] {R, U, N, O, O, B, \0}; printf(菜鸟教程: %s\n, site); return 0; }当上面的代码被编译和执行时会产生下列结果菜鸟教程: RUNOOB2. C语言常用字符串函数C语言标准库提供了大量操作字符串的函数这些函数定义在string.h头文件中。2.1 常用字符串函数列表序号函数功能描述1strcpy(s1, s2)复制字符串s2到字符串s12strcat(s1, s2)连接字符串s2到字符串s1的末尾3strlen(s1)返回字符串s1的长度不包括\04strcmp(s1, s2)比较字符串s1和s2相同返回0s1s2返回负数s1s2返回正数5strchr(s1, ch)返回指向字符串s1中字符ch第一次出现位置的指针6strstr(s1, s2)返回指向字符串s1中字符串s2第一次出现位置的指针2.2 字符串函数使用示例#include stdio.h #include string.h int main() { char str1[14] runoob; char str2[14] google; char str3[14]; int len; /* 复制str1到str3 */ strcpy(str3, str1); printf(strcpy(str3, str1): %s\n, str3); /* 连接str1和str2 */ strcat(str1, str2); printf(strcat(str1, str2): %s\n, str1); /* 连接后str1的总长度 */ len strlen(str1); printf(strlen(str1): %d\n, len); return 0; }当上面的代码被编译和执行时会产生下列结果strcpy(str3, str1): runoob strcat(str1, str2): runoobgoogle strlen(str1): 123. 注意事项与最佳实践3.1 缓冲区溢出问题使用字符串函数时要注意缓冲区大小避免溢出// 危险示例 char dest[10] Hello; char src[20] World, this is too long!; strcat(dest, src); // 缓冲区溢出 // 安全示例使用strncat strncat(dest, src, sizeof(dest) - strlen(dest) - 1);3.2 字符串长度计算strlen()函数计算的是字符串的实际长度不包括结尾的\0char str[] Hello; int length strlen(str); // 返回5不是63.3 字符串比较strcmp()比较的是字符串内容不是地址char str1[] Hello; char str2[] Hello; char *str3 Hello; printf(%d\n, strcmp(str1, str2)); // 0相同 printf(%d\n, str1 str2); // 0地址不同 printf(%d\n, strcmp(str1, str3)); // 0内容相同4. 总结C语言中的字符串是以空字符\0结尾的字符数组。理解字符串的内存表示和常用字符串函数是C语言编程的基础。在实际开发中要注意缓冲区安全合理使用字符串函数并理解字符串与字符数组的区别。您可以在C标准库中找到更多字符串相关的函数如strncpy、strncat、strncmp等这些函数提供了更安全的缓冲区操作方式。
1. 从“双闪烁”现象说起:一个看似简单却暗藏玄机的信号问题在嵌入式开发、硬件调试乃至软件UI交互的日常工作中,我们经常会遇到一个词:“闪烁”。它可能是指LED灯不按预期地忽明忽暗,也可能是屏幕上某个区域在快速刷新时产生的视…
📅 2026/8/1 18:57:58
1. 项目概述:3.52英寸电子纸HAT入门指南 如果你手头有一块树莓派,并且对低功耗、类纸质感、常显不伤眼的显示方案感兴趣,那么这块3.52英寸的电子纸(e-Paper)HAT绝对值得你花时间折腾一下。我最初接触它,是想…
📅 2026/8/1 18:57:58
通达信缠论插件3分钟上手指南:告别手工分析,实现智能交易决策 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator
缠论可视化交易插件是专为通达信用户设计的开源技术分析工具&#x…
📅 2026/8/1 18:57:58
1. 项目概述:从“跑起来”到“跑得快”的算法哲学每次看到算法代码在屏幕上输出最终结果,或者模型训练曲线最终趋于平稳,心里总会松一口气。但作为开发者或研究者,我们绝不能仅仅满足于“它终于算出来了”。一个更核心、更专业的问…
📅 2026/8/1 19:47:43
如何用AI图文生成器3分钟打造爆款小红书内容:红墨AI专业指南 【免费下载链接】RedInk Red Ink - A one-stop Xiaohongshu image-and-text generator based on the 🍌Nano Banana Pro🍌, "One Sentence, One Image: Generate Xiaohongshu…
📅 2026/8/1 19:47:43
本文主要从设计与原理方面分享优化过程中的思考,不涉及具体的代码实现。在分析过程中我会写一些当时思考的问题,在看后续答案时可以自己也先思考一下
老的限流方案
首先讲解一下原本网关限流功能的实现方案,省略其中的白名单,黑名…
📅 2026/8/1 19:47:43
更多请点击:
https://codechina.net
第一章:文件命名错误率下降92%的秘密:我们如何在金融审计场景中通过AI命名实现零人工干预 在某头部券商的年度合规审计项目中,我们部署了一套基于多模态语义理解的AI文件命名引擎,…
📅 2026/8/1 19:47:43
【摘要】生成式 AI 加速渗透企业组织,传统科层制下的中层岗位价值持续消解,人才从互联网大厂向 AI 初创公司流动成为显性趋势。内容拆解组织变革的底层逻辑,提出成长净值决策框架,覆盖四条核心职业路径与三类组合策略,…
📅 2026/8/1 19:47:42
下载链接
游戏介绍
《剑星》是一款由韩国Shift Up开发的动作冒险游戏。游戏背景设定在地球被强大异生物“NA:tives”摧残后,人类逃至太空殖居地,主角伊芙肩负收复地球的使命。玩法上以第三人称视角战斗,有弹反、闪避等操作,还可…
📅 2026/8/1 19:46:42
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/8/1 1:20:16
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/8/1 1:20:19
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/8/1 1:20:17
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30