第11天:字符串 — 操作指南

📅 2026/8/3 7:29:22
第11天:字符串 — 操作指南
小白记录日常学习一、今日任务总览| 步骤 | 内容 | 时间 ||------|------|------|| ① | 阅读教材第4章 §4.1-4.3 第11章 §11.1-11.3 | 60分钟 || ② | 理解字符串在内存中的样子 | 20分钟 || ③ | 手打并运行3个练习 | 50分钟 || ④ | 自由实验 | 30分钟 |二、今日核心知识点2.1 字符串的本质C 语言没有专门的字符串类型。字符串就是一个以 \0 结尾的 char 数组。char name[] AB;内存name[0] Aname[1] Bname[2] \0 ← C 自动加上的标志字符串在这里结束strlen(AB) 2 ← 数到 \0 之前有几个字符sizeof(AB) 3 ← 包括隐式的 \02.2 字符串与指针学完指针第10天再看字符串一切变简单了cchar *p Hello; // p 指向字符串首字符 H*p → H // 首字符*(p1) → e // 下一个字符*(p4) → o // 第5个字符*(p5) → \0 // 结束符遍历字符串的标准写法cwhile (*p ! \0){printf(%c, *p);p;}2.3 常用字符串函数string.h| 函数 | 作用 | 例子 ||------|------|------|| strlen(s) | 返回长度不含 \0 | strlen(Hi) → 2 | string length| strcpy(dst, src) | 把 src 复制到 dst | strcpy(a, b) | string copy| strcmp(a, b) | 比较两个字符串 | 相等返回 0ab 返回负数 | string compare| strcat(dst, src) | 把 src 拼接在 dst 后面 | strcat(s, !) | string concatenate2.4 fgets 代替 getsc// gets(str); ← 危险可能溢出C11已移除char str[100];fgets(str, sizeof(str), stdin); // ★ 安全限制了最大读取长度// 注意fgets 会保留末尾的换行符 \n如果不需要手动去掉str[strcspn(str, \n)] \0;2.5 字符分类函数ctype.h| 函数 | 判断的是什么 ||------|-------------|| isupper(c) | 大写字母 A-Z || islower(c) | 小写字母 a-z || isdigit(c) | 数字 0-9 || isspace(c) | 空白字符空格、\t、\n || isalpha(c) | 字母大小写都算 | alphabetical三、阅读任务60分钟| 章节 | 内容 | 重点 ||------|------|------|| §4.1-4.3 | 字符串入门、strlen、常量和预处理器 | ★★★ || §11.1 | 字符串与字符串函数 | ★★★ || §11.2 | 字符串输入 | ★★ || §11.3 | 字符串输出 | ★★ |四、动手练习50分钟练习1自己实现 strlenbashgcc ex1_strlen.c -o ex1_strlen.exe./ex1_strlen.exe重点对比strlen() 和 sizeof() 的返回值差 1。练习2字符串统计bashgcc ex2_string_stats.c -o ex2_string_stats.exe./ex2_string_stats.exe输入一个带大小写字母和数字的字符串如 Hello2026 World观察统计结果。练习3字符串反转双指针bashgcc ex3_reverse_string.c -o ex3_reverse_string.exe./ex3_reverse_string.exe纸上追踪画出 ABCD 反转时每一轮 left 和 right 的变化。五、自由实验30分钟实验1判断回文写一个函数判断字符串是否为回文正读反读一样如 level。用第10天学的双指针。实验2大小写转换输入一个字符串把所有大写字母转小写小写转大写。六、今日自检- [ ] 知道字符串 \0 结尾的 char 数组- [ ] 能区分 strlen 和 sizeof- [ ] 知道为什么要用 fgets 而不是 gets- [ ] 能自己写 strlen 函数- [ ] 三个练习全部运行成功七、明天预告第12天全面复习 10道综合练习题— 独立写代码不看书。