读文件时候的一个问题

ciappcia 2008-10-09 12:02:27
在a.txt里面我保存了1234abce,直接复制粘贴过去的,但是当我读的时候,找不到结束符号EOF,请问是怎么回事??

main() 
{
FILE *fp=fopen("in.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(fread(&ch,1,1,fp)!=EOF);//这里死循环了

}

main()
{
FILE *fp=fopen("in.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(ch!='e')//这样也结束不了,
{
cout<<ch;
fread(&ch,1,1,fp);
}//最后一直打印eeeeeeeeeeeeeeeee
}

请问下是不是我保存的时候方法不对,还是文件操作不正确??两个方法都找不到文件的结尾,到底结尾是怎么确定的,我明明只保存了这么几个字符的啊
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fighting Horse 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 frank_ll 的回复:]
EOF 是不是不一定等于 0 呢

fread返回0而不是EOF
[/Quote]

EOF 是 (int)-1
frank_ll 2008-10-09
  • 打赏
  • 举报
回复
EOF 是不是不一定等于 0 呢

fread返回0而不是EOF
lzr4304061988012 2008-10-09
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <iostream>
using namespace std;

void main()
{
FILE *fp=fopen("1.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(fread(&ch,1,1,fp)==1)
{
cout<<ch<<" ";
}//这里,判断条件错了
}

b c d e f g 请按任意键继续. . .
lzr4304061988012 2008-10-09
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <iostream>
using namespace std;

void main()
{
FILE *fp=fopen("1.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(fread(&ch,1,1,fp)==1)
{
cout<<ch<<" ";
}//这里,判断条件错了
}

b c d e f g 请按任意键继续. . .
wangdeqie 2008-10-09
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <iostream>
using namespace std;

void main()
{
FILE *fp=fopen("in.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(fread(&ch,1,1,fp)!=1);//这里,判断条件错了
}

kkndciapp 2008-10-09
  • 打赏
  • 举报
回复
我说的是上面,都已经知道e是文件末尾了,当然可以结束,但是怎么才能知道读到了文件末尾??
Fighting Horse 2008-10-09
  • 打赏
  • 举报
回复
改成 while(fread(&ch,1,1,fp)!=0);就行了,fread不会返回eof的,如果结束了就返回0
wangdeqie 2008-10-09
  • 打赏
  • 举报
回复
in.txt:
1234abceeeeeeee


//运行结果:(VC6)
1234abc
Press any key to continue

//代码
#include <stdio.h>
#include <iostream>
using namespace std;

void main()
{
FILE *fp=fopen("in.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(ch!='e')
{
cout<<ch;
fread(&ch,1,1,fp);
}
cout<<endl;
}

太乙 2008-10-09
  • 打赏
  • 举报
回复


1、没close掉fp

2、按lz所说,保存在a.txt里,而不是in.txt,那么lz程序里读取的就对了,得把in.txt改为a.txt

太乙 2008-10-09
  • 打赏
  • 举报
回复

贴全代码!我这运行没问题:



#include <iostream>
using namespace std;
main()
{
FILE *fp=fopen("in.txt","rb");
char ch;
fread(&ch,1,1,fp);
while(ch!='e')//这样也结束不了,
{
cout<<ch;
fread(&ch,1,1,fp);
}//最后一直打印eeeeeeeeeeeeeeeee

fclose(fp);
}



1234abcPress any key to continue


太乙 2008-10-09
  • 打赏
  • 举报
回复


main()
{
FILE *fp=fopen("in.txt","r+");//这里
char ch;
fread(&ch,1,1,fp);
while(ch!='e')//这样也结束不了,
{
cout<<ch;
fread(&ch,1,1,fp);
}//最后一直打印eeeeeeeeeeeeeeeee
}


65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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