资料合集下载链接:
https://pan.quark.cn/s/472bbdfcd014
在上一篇文章中,我们探讨了二级指针作为函数“输出特性”的强大功能。今天,我们将更进一步,通过一个完整的实战项目,将二级指针与文件I/O操作结合起来,学习如何动态、高效地读取和管理文件内容。
这个项目非常经典,它能帮你解决一个常见问题:如何读取一个行数未知、每行长度也未知的文本文件,并将其内容优雅地存储在内存中?
答案,就在于 char ** ——指向指针的指针。
一、 项目需求与整体思路
我们的目标是:
- • 自动获取文件中的总行数。
- • 动态分配一个指针数组(char **),其大小与文件行数相同。
- • 逐行读取文件,并为每一行字符串动态分配恰好足够的内存。
- • 将所有字符串打印到控制台。
- • 在程序结束前,干净、彻底地释放所有动态分配的内存。
核心思路:两步走内存分配
直接用一个巨大的二维数组 char data[100][100]?这太浪费空间了!如果文件只有3行,每行5个字符,那绝大部分内存都被闲置了。
正确的做法是使用二级指针 char **p_data,进行两级精细化的内存分配:
这种方式就像一个书架(char **),我们先确定需要多少个隔层(指针数组),然后再把每一本书(字符串)放到对应的隔层上,每本书占用的空间都恰到好处。
评论前必须登录!
注册