c 语言中的文件结尾(eof)
在 c 语言中表达 eof 的话题将是本文的重点。
c 语言中的 end of file
(eof)
当不再有任何数据可以从数据源读取时,称为 end of file
的情况发生在计算机的操作系统中。数据源通常被称为文件
或流
。
当显示 end of the file (eof)
消息时,输入已完成。
输入内容后,我们可以同时按下 ctrl 和 z 键来终止文本。这表明文件已经结束,没有什么要读的了。
在 c 语言中到达文件末尾时,getc()
函数返回 eof
。如果不成功,getc()
也将返回 end-of-file (eof)
。
因此,仅将 getc()
提供的值与 eof
进行比较以确定文件是否已到达其末尾是不够的。c 提供了 feof()
函数来解决这个问题。
仅当到达文件末尾时,此函数才会返回大于零的值;否则,它将返回 0
。
c 语言中对文件的操作
大多数程序都是为了保存从程序中检索到的信息而开发的。其中一种方法是将获得的信息保存在文件中。
以下是可以对文件执行的各种操作的列表。
创建文件
使用 fopen
程序并指定诸如 a
、a
、w
和 w
之类的特征,可以创建一个新文件。
打开文件
每当打开文件时,都会使用 fopen
功能和适当的访问模式。以下是一些最常用的文件访问模式。
-
按
a
将搜索文件。如果文件被成功打开,fopen()
函数将其加载到内存中并创建一个指针,该指针链接到正在从中读取的字符。如果该文件尚不存在,则会生成一个新文件。如果无法打开文件,则返回
null
。 -
字母
w
搜索文件。如果文件已经存在,文件的内容将被重写。如果该文件尚不存在,则会生成一个新文件。如果文件无法打开,将返回
null
。
为了执行需要在文件上完成的活动,使用称为 文件指针
的专用指针,其声明如下所示:
file *fp;
因此,可以使用以下命令打开文件:
fp = fopen("shanii.txt", "w");
这里,shanii.txt
是我们要打开的文件,第二个参数是文件模式。
读取文件
fscanf
和 fgets
函数用于对文件执行读取操作。这两种方法都执行与 scanf
和 gets
相同的操作,但它们考虑了一个称为文件指针
的额外参数。
你可以选择逐个字符或逐行读取文件,具体取决于你希望如何组织信息。以下是读取文件所需的代码示例。
file * fp;
fp = fopen("shanii.txt", "r");
fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
写一个文件
用于读取文件的函数 fprintf
和 fputs
也可以用于写入文件,其过程与读取文件非常相似。写入文件时使用的命令如下所示:
file *fp ;
fp = fopen("shanii.txt", "w");
fprintf(fp, "%s %s %s %d", "i", "am", "zeeshan", 2000);
关闭文件
在成功完成所有操作后,你必须始终关闭文件。你必须使用 fclose
函数才能成功关闭文件。
关闭文件的代码如下所示:
file *fp ;
fp= fopen("filename.txt", "w");
fprintf(fp, "%s %s %s %d", "i", "am", "zeeshan", 2000);
fclose(fp);
c 语言中的 eof 示例
例如,查看以下 c 代码以在屏幕上显示名为 shanii.txt
的文本文件的内容。
getc()
的值首先与 eof
进行比较。
int charac = getc(filepointer);
while (charac != eof) {
putchar(charac);
charac = getc(filepointer); }
然后,使用 feof()
执行第二次检查。此检查确保程序仅在到达文件末尾时输出 program has reached end-of-file
。
if (feof(filepointer))
{ printf("\n program has reached end-of-file"); }
否则程序将显示 there was a problem
。
源代码:
#include
int main() {
file *filepointer = fopen("shanii.txt", "r");
int charac = getc(filepointer);
while (charac != eof) {
putchar(charac);
charac = getc(filepointer); }
if (feof(filepointer))
{ printf("\n program has reached end-of-file"); }
else
{ printf("\n there was a problem"); }
fclose(filepointer);
getchar();
return 0;
}
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
在c中将整数转换为字符
发布时间:2024/01/03 浏览次数:131 分类:c语言
-
本教程介绍了在c中将整数转换为字符的不同方法。在c编程语言中,将整数转换为字符在各种情况下都很重要。在c中,字符是以ascii值表示的,因此转换过程相对简单。
发布时间:2023/05/07 浏览次数:364 分类:c语言
-
本文介绍了如何在 c 语言中使用 typedef enum。使用 enum 在 c 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。
发布时间:2023/05/07 浏览次数:129 分类:c语言
-
本文演示了如何在 c 语言中使用前缀增量与后缀增量运算符。c 语言中 i 和 i 记号的主要区别
发布时间:2023/05/07 浏览次数:275 分类:c语言
-
本文演示了如何在 c 语言中获取当前工作目录。使用 getcwd 函数获取当前工作目录的方法
发布时间:2023/05/07 浏览次数:177 分类:c语言
-
本文介绍了如何在 c 语言中使用位掩码。使用 struct 关键字在 c 语言中定义位掩码数据
发布时间:2023/05/07 浏览次数:212 分类:c语言
-
本文演示了如何在 c 语言中使用标准库排序函数。使用 qsort 函数对 c 语言中的整数数组进行排序
c 语言中的 extern 关键字
发布时间:2023/05/07 浏览次数:131 分类:c语言
-
本文介绍了如何在 c 语言中使用 extern 关键字。c 语言中使用 extern 关键字来声明一个在其他文件中定义的变量