Day07_C语言字符串避坑指南

发布时间:2026/11/3 10:40:29

Day07_C语言字符串避坑指南 嵌入式自学 Day07我踩过的 6 个字符串坑——strlen、sizeof、\0、gets 全讲透这是我的嵌入式自学Day07。前几天一直在学数组我以为字符数组不过是「存字符的数组」。直到写出这样一段代码chars[10]hello;printf(%d\n,strlen(s));printf(%d\n,sizeof(s));我本来以为两个都会输出10。结果程序却打印5 10当时第一反应就是数组长度明明是10为什么 strlen 却只有5后来才发现我一直把字符数组和字符串混为一谈了。今天就把我踩过的几个坑整理出来希望刚学 C 的朋友少绕一点弯路。坑一字符数组 ≠ 字符串很多人第一次都会觉得char 数组就是字符串。其实不是。例如chars[10]hello;内存真正存的是下标 0 1 2 3 4 5 6 7 8 9 内容 h e l l o \0 ? ? ? ?数组长度是10。真正的字符串只有hello因为它在\0就结束了。为什么会错数组只是存储空间。字符串其实是一段以\0结尾的数据。正确代码chars1[]hello;chars2[10]hello;s1长度是 6包含\0s2长度是 10一句话总结字符数组是容器字符串只是容器里以\0结束的一段内容。坑二别把\0当成普通字符错误示例chars[5]hello;为什么错“hello” 实际需要 6 个字节包含\0。正确代码chars[6]hello;// 或 char s[] hello;一句话总结字符串真正结束的位置不是最后一个字母而是\0。坑三strlen 为什么不是 sizeof错误示例chars[10]hello;printf(%zu\n,strlen(s));printf(%zu\n,sizeof(s));为什么错strlen()统计\0前面的字符数sizeof()统计整个数组大小输出strlen5 sizeof10一句话总结strlen 看字符串长度sizeof 看内存大小。坑四字符串不能直接用 复制错误示例chars1[]hello;chars2[20];s2s1;正确代码chars1[]hello;chars2[20];strcpy(s2,s1);一句话总结字符串复制请用strcpy()。坑五strcat() 不是无限拼接错误示例chars[10]hello;strcat(s,world);为什么错目标数组空间不足会越界。正确代码chars[20]hello;strcat(s,world);一句话总结拼接前先确认目标数组容量。坑六gets() 为什么被淘汰错误示例chars[10];gets(s);为什么错不会检查输入长度容易数组越界。正确代码chars[10];fgets(s,sizeof(s),stdin);一句话总结不要再使用 gets()。今日避坑指南字符数组不等于字符串字符串必须以\0结束strlen()看字符串长度sizeof()看数组大小strcpy()复制字符串strcat()注意空间不要使用gets()今日学习感悟真正理解字符串不是记住几个函数而是理解\0才是 C 字符串结束的标志。以后无论是串口、协议解析还是嵌入式开发这都是必须掌握的基础。下一篇预告为什么冒泡排序这么慢一篇讲透 C 语言三种经典排序算法——排序算法专题三种排序横向对比。
延伸阅读

更多相关文章

2026/11/3 16:14:05

MySQL 索引原理——B+ 树、聚簇索引、覆盖索引

索引是 MySQL 性能优化的核心。理解索引的原理,才能用好索引。 一、B 树结构 叶子节点存数据,非叶子节点存键值指针 叶子节点之间有链表连接,支持范围查询 高度 3-4 层能支撑千万级数据二、聚簇 vs 非聚簇 InnoDB 主键索引(聚簇&a…

2026/11/3 18:31:14

ChatGPT记忆功能解析:从技术原理到工程实践

如果你还在为每次与ChatGPT对话都要"从头开始"而烦恼,那么最近OpenAI推出的记忆功能更新,可能正是你期待已久的解决方案。这项看似简单的功能升级,实际上正在重新定义我们与AI的交互方式——从单次对话的工具,转变为真正…

2026/10/30 9:37:34

技术博客写作规范指南:结构设计、代码规范与最佳实践

这次我们来看一个技术内容创作规范指南。在技术博客写作中,遵循正确的格式要求和内容规范至关重要,这直接影响到文章的可读性和传播效果。本文将重点解析技术博客的核心写作要点,包括结构设计、内容组织、代码规范等实用技巧。对于技术作者来…

2026/11/3 20:42:53

AgentScope多智能体框架实战:从踩坑到跑通工程化系统

1. 从一堆散装脚本到工程化系统:我为什么盯上了 AgentScope前阵子我在做一个多智能体协作的验证项目,需求说起来不复杂:让几个不同角色的 Agent 分工完成一份行业调研,一个负责检索资料,一个负责交叉验证,一…

2026/11/3 20:42:53

Fledge Alpha匿名免费模型:1M上下文接入与避坑

1. 先把这个模型说清楚:Fledge Alpha 能干什么、不能干什么第一次看到"Fledge Alpha:匿名免费模型,1M 上下文 129B Token 零花费"这个说法,我第一反应不是兴奋,而是三个问号:匿名到什么程度&…

2026/11/3 20:42:53

零基础PCB设计入门:从原理图、封装到DRC的完整流程

简介:这份PDF面向零基础想自学PCB设计的读者,也适合已有基础的设计师查漏补缺,内容围绕嘉立创EDA的使用习惯与入门路径展开。它把工程创建、元件库管理、元件与封装关联、原理图绘制中的网络标签和模块整理、DRC检查、PCB间距规范&#xff0c…

2026/11/3 20:42:53

2026年装修管理软件测评:AI与云端协同成主流

1. 2026年装修管理软件行业现状与测评背景 装修行业数字化转型已经进入深水区,2026年的装修管理软件市场呈现出三个显著特征:首先是SaaS化程度达到87%,云端协同成为标配功能;其次是移动端使用时长首次超过PC端,占比达到…

2026/11/3 20:42:53

USRP X410+相控阵实现毫米波通感一体化实测

1. 项目概述:这不是实验室Demo,是实打实跑在空旷场地里的毫米波通感一体化系统“基于USRP和相控阵的毫米波通感一体化原型:从同步到定位的实测之旅”——这个标题里藏着三个硬核关键词:USRP、相控阵、通感一体化。我第一次看到它时…

2026/11/3 20:37:52

Dynamics 365 MB-365配置因果链识别与三阶映射能力解析

简介:本资源为MB-300认证考试《Microsoft Dynamics 365: Core Finance and Operations》的完整题库PDF,面向备考微软Dynamics 365财务与运营方向的开发人员、实施顾问及系统管理员,助力高效掌握核心考点与实操逻辑。资料严格依据2021年3月更新…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑