文本文件
C语言中的文本文件直观易懂。C语言中所有文本文件函数和类型均来自stdio库。
当C程序需要文本I/O时,并且只需要一个输入信息源和一个输出信息接收器时,您可以依赖stdin(标准输入)和stdout(标准输出)。然后,您可以在命令行使用输入和输出重定向,使不同的信息流通过程序。<stdio.h>中有六个不同的I/O命令,可与stdin和stdout一起使用:
广告
- printf - 将格式化输出打印到stdout
- scanf - 从stdin读取格式化输入
- puts - 将字符串打印到stdout
- gets - 从stdin读取字符串
- putc - 将字符打印到stdout
- getc, getchar - 从stdin读取字符
stdin和stdout的优点是易于使用。同样,I/O重定向功能也非常强大。例如,您可能想创建一个从stdin读取并计数字符数量的程序:
#include <stdio.h> #include <string.h> void main() { char s[1000]; int count=0; while (gets(s)) count += strlen(s); printf("%d\n",count); }
输入此代码并运行。它会等待stdin输入,所以请键入几行。完成后,按CTRL-D表示文件结束(eof)。gets函数会读取一行直到检测到eof,然后返回0,从而结束while循环。当您按CTRL-D时,您会在stdout(屏幕)上看到字符数量的计数。(使用man gets或您的编译器的文档了解更多关于gets函数的信息。)
现在,假设您想统计文件中的字符数。如果您将程序编译成名为xxx的可执行文件,您可以键入以下内容:
xxx < filename
文件filename的内容将被用作输入,而不是从键盘接收输入。您也可以使用管道实现相同的效果:
cat < filename | xxx
您还可以将输出重定向到文件:
xxx < filename > out
此命令会将程序生成的字符计数放入名为out的文本文件中。
有时,您需要直接使用文本文件。例如,您可能需要打开一个特定文件并从中读取或写入。您可能希望管理多个输入或输出流,或者创建一个像文本编辑器那样的程序,可以按命令保存和调取数据或配置文件。在这种情况下,请使用stdio中的文本文件函数:
- fopen - 打开一个文本文件
- fclose - 关闭一个文本文件
- feof - 检测文件中的文件结束标记
- fprintf - 将格式化输出打印到文件
- fscanf - 从文件读取格式化输入
- fputs - 将字符串打印到文件
- fgets - 从文件读取字符串
- fputc - 将字符打印到文件
- fgetc - 从文件读取字符