linux 下如何判断文件流是否到达文件结尾??

Linux_木头 2010-09-28 08:46:42
int read( char *pItem)
{
char confLine[CONLINELENGTH] = {};

FILE *fp;
if((fp = fopen(fileName,"r+")) == NULL)
{
perror("failed fopen\n");
exit(1);
}
while(fgets(confLine, CONLINELENGTH, fp) != NULL)
{
...............
}
// fseek(fp,0,SEEK_END);
printf("fp =%d\n",feof(fp));
return 0;
}
这是我写的一个函数,我需要判断文件流是否到达文件的结尾?
第一种情况:
我把代码中的 fseek(fp,0,SEEK_END); 注释掉,那么最后的结果是 fp= 1,根据原理表示到达了文件结尾,
第二种情况:
fseek(fp,0,SEEK_END);没有注释掉,那么最后的结果是 fp=0,根据原理表示没有到达文件结尾。

我的问题是 为什么在fseek(fp,0,SEEK_END)没有注释掉时输出的不是文件结尾呢?fseek(fp,0,SEEK_END)这是用来设置文件流到达文件结尾吗?
这其中有什么奥妙吗?请各位大侠指教
...全文
681 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
原型char *fgets(char *s, int size, FILE* stream)
该函数用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行符、读到文件尾或是已读到了size-1个字符为止,最后会加上NULL作为字符串结束符,so……读到到文件尾部的前一位。
用fread()可以读到文件尾
saishow 2010-09-29
  • 打赏
  • 举报
回复
EOF
quanhao8 2010-09-28
  • 打赏
  • 举报
回复
学习了
greex 2010-09-28
  • 打赏
  • 举报
回复
feof提供了此功能。如果到的结束就回返回true,否则返回false
mymtom 2010-09-28
  • 打赏
  • 举报
回复
做一个不恰当的比喻:
EOF好像路上一堵墙。

沿着路一直开车,撞到墙了, feof返回TRUE.
用吊车把车放到墙边fseek(fp,0,SEEK_END); 这时候还是是不知道是否撞到墙了。feof返回FALSE.
现在开车,可是开不动,已经顶在墙上了,就好比fread啥也没有读到,feof返回TRUE
dingshaofengbinbin 2010-09-28
  • 打赏
  • 举报
回复
tananade 2010-09-28
  • 打赏
  • 举报
回复
这还真没注意过.....帮顶

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧