您的位置:

c语言读到文件末尾,c语言文件结尾

本文目录一览:

C语言 关于文件末尾

读文件的最后一个字节后,并不是EOF, 然后再读,读文件尾才是EOF

你读最后一个字符, 读出后没有EOF,记录, 然后判断feof, 之后又开始读, 才EOF, 没读出, 变量里还是之前的值, 你又记录, 然后再判断EOF才退出

你应该读完之后立即判断EOF然后再记录,如果读多个字节或读不固定的大小还要判断读文件的函数的返回值有没有读出来

C语言 格式读取 fscanf() 如何读取至末尾结束(txt)

fscanf是有返回值的。如果返回EOF,证明到达文件结尾

在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。

扩展资料:

应用

档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。

C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。

关于C语言读取文件结尾的问题

可以使用while循环

如:

while(fscanf(fp,"%s",str)!=EOF) 其中这个判断 EOF 就是是否读取到文件结尾

是 end of file的缩写.

c语言执行fgets时,如何判断是否到了文件末尾?

如果文件末尾有一个空行,注意特别注意用fgets进行读,比如文件:

aaa 234 444 bbb

123 kkk 9 00 00000 0000

ccc 34

如果最后没有空行,即没有\n,读到ccc 34这行时,fgets遇到了EOF,结束,str="ccc 34\0"; 如果最后有空行;读到ccc 34这行时,fgets遇到了new line,str="ccc 34\n\0",此时文件未返回EOF,再次fgets时,遇到EOF,fgets返回NULL,str的内容没有变,因此用fgets读时判断是否该结束最好如此:

while(fgets(...)) {

...

}

而不要用

while(!feof()) {

fgets();

...

}

如何用C语言读取txt文档中最后一行数据

如果想自由地读取txt文档任意位置,就只能使用随机读写数据文件的方式来读与写的操作。因为C语言里的随机读写数据文件提供了 “文件位置标记”和定位的相关函数。

例如:

rewind函数使文件位置标记指向文件开头

fseek函数改变文件位置标记,其中该函数的原型为:

fseek(文件类型指针,位移量,起始点);

如果仅仅是想读取文件末尾一行数据,只需把起始点定位到文件末尾,位移量为负数代表向后挪的意思。

如:

fseek(fp,-100L,SEEK_END); // 文件游标定位到文件末尾处,然后向后退100个字节。

紧接着就是读取了:

fread(buffer,100,1,fp);