9.2.2 以行的方式读写文件
以字符的方式来读写文件,虽然比较简单,但对于一行字符来说,处理起来就相对麻烦。因此,可以使用 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论