尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

第11天:字符串 — 操作指南
📅 发布时间:2026/8/3 7:33:01

小白记录日常学习

一、今日任务总览

| 步骤 | 内容 | 时间 |
|------|------|------|
| ① | 阅读教材:第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] = 'A'
name[1] = 'B'
name[2] = '\0' ← C 自动加上的,标志"字符串在这里结束"
```

```
strlen("AB") = 2 ← 数到 '\0' 之前有几个字符
sizeof("AB") = 3 ← 包括隐式的 '\0'
```

2.2 字符串与指针

学完指针(第10天)再看字符串,一切变简单了:

```c
char *p = "Hello"; // p 指向字符串首字符 'H'

*p → 'H' // 首字符
*(p+1) → 'e' // 下一个字符
*(p+4) → 'o' // 第5个字符
*(p+5) → '\0' // 结束符
```

遍历字符串的标准写法:
```c
while (*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)` | 比较两个字符串 | 相等返回 0,a<b 返回负数 | string compare
| `strcat(dst, src)` | 把 src 拼接在 dst 后面 | `strcat(s, "!")` | string concatenate

2.4 fgets 代替 gets

```c
// 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:自己实现 strlen

```bash
gcc ex1_strlen.c -o ex1_strlen.exe
./ex1_strlen.exe
```

重点对比:`strlen()` 和 `sizeof()` 的返回值差 1。

练习2:字符串统计

```bash
gcc ex2_string_stats.c -o ex2_string_stats.exe
./ex2_string_stats.exe
```

输入一个带大小写字母和数字的字符串(如 `Hello2026 World`),观察统计结果。

练习3:字符串反转(双指针)

```bash
gcc 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道综合练习题— 独立写代码,不看书。

相关新闻

  • 低代码与零代码深度解析:核心差异、技术原理与选型指南
  • 深度解构:三步骤实现群晖NAS硬盘兼容性自由的技术探索
  • Java序列化机制深度解析与性能优化实践

最新新闻

  • 惠普打印机驱动下载与安装全攻略:从官网精准获取到彻底解决代码39错误
  • Apifox自动化测试实战:从零构建API一体化协作与质量保障体系
  • 三款免费代码对比工具深度评测:WinMerge、Meld与Diffoscope实战指南
  • Vue Router重定向实战与权限控制方案
  • 全球文字显示难题的终极解决方案:Noto字体项目深度解析
  • 洛阳企事业单位食堂厨具更新改造:关林后厨工程设备供货与安装一体化服务

日新闻

  • 112、LLC谐振变换器的输入电压瞬态仿真分析
  • 2026深圳疑难签证办理指南:拒签再签/商务签/高端定制机构怎么选 - 互联网科技品牌测评
  • C-LODOP在Edge等现代浏览器中的部署、适配与实战应用

周新闻

  • 怀化母婴除甲醛公司测甲醛中心怎么选:康之居母婴除甲醛标准、流程、避坑指南 - 信誉隆金银铂奢回收
  • 三步打造你的终极音乐中心:foobox-cn网络电台功能完整指南
  • Lance湖仓格式:为多模态AI工作流设计的终极数据存储方案

月新闻

  • ClickHouse版本管理深度实战:4步构建零风险升级与回滚体系
  • Java 23 种设计模式:从踩坑到精通 | 番外:责任链模式 —— 物流审批流程实战
  • 华硕笔记本性能解放指南:G-Helper轻量级控制工具全面解析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号