返回介绍

9.2.2 以行的方式读写文件

发布于 2025-04-11 22:33:05 字数 1621 浏览 0 评论 0 收藏 0

以字符的方式来读写文件,虽然比较简单,但对于一行字符来说,处理起来就相对麻烦。因此,可以使用 fgets 函数和 fputs 函数,非常方便地对文本文件进行一行字符的读取或写入。其中 fputs 函数用于向文件输出(写入)一行字符,该函数原型如下:

int fputs(const char *str, FILE *stream);

参数 str 是一个字符串的指针,即将所要写入文件的一行字符看作为一个字符串,str 为该字符串的首地址;参数 stream 为与所写入文件相关联的输出流。函数执行成功返回非负值,执行失败则返回 EOF。

例 9-3 】编写程序,将“Red apple”以行的方式写入 D 盘的 test.txt 文件。

程序代码如下:

由于使用了 fputc 函数,不再是逐字符地写入,而是将一行字符一次性地写入文件。因此,和【例 9-1】的程序代码相比,要明显简单了许多。

编译运行程序,正常情况下,写入文件成功,会打印如下结果:

File written successful.

和 fputs 函数相对应的就是 fgets 函数,该函数的原型如下:

char *fgets(char *str, int num, FILE *stream);

fgets 函数可以从文件中读取一行或指定数量的字符,组成字符串存储到指定的数组或内存空间中。参数 str 是数组或内存空间的首地址,参数 num 是数组或内存空间的大小,参数 stream 是与文件相关联的输入流。函数执行成功返回 str,若执行失败返回 NULL。

例 9-4 】编写程序,以行的方式读取 D 盘 test.txt 文件中的内容,并打印输出。

程序代码如下:

代码中,定义了一个长度为 128 的字符数组 buf,作为从文件读取字符的存储区域。在 fgets 函数的调用语句中,第一个参数为 buf 数组名,第二个参数为 buf 的大小 128。这表示最多可以从文件中读取 127 个字符,并添加一个空字符,作为字符串的结束标记,存储到 buf 数组中。

编译运行程序,结果如下:

The read content is: Red apple

可见,从文件读取并保存至 buf 数组中的字符串是“Red apple”。也就是 fgets 函数在从文件中读取字符时,并不会总是固定地读取 127 个字符,当遇到换行字符或读到文件末尾(EOF)时,就会停止读取。

fgets 函数若读取到换行字符,会将其视为读取字符的一部分,存储到指定数组或内存空间中。而 fputs 函数在向文件输出字符时,只会输出字符串本身所包含的字符,并不会像 puts 函数那样,在输出完字符串后再自动加上一个换行字符。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。