C语言文件操作:按行读写实践与区别

需积分: 0 0 下载量 120 浏览量 更新于2024-08-05 收藏 173KB PDF 举报
第12章主要探讨了C语言程序设计中的文件操作,重点是按行读写文件。这一章节涉及两个关键函数:`fputs()`和`fgets()`,它们分别用于按字符串(行)进行文件的写入和读取。 `fputs(const char*s, FILE*fp)`函数用于将字符串`s`写入指定的文件`fp`中。它与`puts()`类似,如果写入过程中发生错误,会返回EOF(文件结束标志),否则返回一个非负数值。然而,与`puts()`不同,`fputs()`不会自动在字符串结尾添加换行符,除非字符串本身已包含换行符。另外,`puts(const char*s)`函数会将字符串写入标准输出流(stdout)并在其后添加一个换行符。 `fgets(char*s, int n, FILE*fp)`用于从文件`fp`中按行读取字符串,最多读取`n-1`个字符。当遇到回车换行符、文件结束或达到字符限制时,函数返回字符串的首地址。使用`fgets(char*s, sizeof(buf), stdin)`替代`gets(char*s)`可以提供更高的安全性,因为`gets()`在实际应用中容易导致缓冲区溢出的安全问题。 `gets(char*s)`和`fgets()`的共同点在于它们都会在读取的字符串末尾添加`\0`,表示字符串的结束。不同之处在于`gets()`在读取到换行符时停止,且不保留换行符,将其替换为`\0`,而`fgets()`则会保留换行符。 在编程示例中,展示了如何在C语言中将用户从键盘输入的一串字符写入名为"demo.txt"的磁盘文件中。首先打开文件,然后使用`gets()`获取用户输入,接着调用`fputs()`将输入写入文件,最后关闭文件。同样,也可以通过修改数组大小(如由8改为80)来演示按行写入更大的数据。 本章内容涵盖了C语言文件操作的基础,包括如何按行读取和写入文本文件,以及在实际编程中需要注意的安全性和细节。这对于理解和操作文件系统,尤其是进行简单的文本处理和数据持久化至关重要。