读文件时候的一个问题

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
}

请问下是不是我保存的时候方法不对,还是文件操作不正确??两个方法都找不到文件的结尾,到底结尾是怎么确定的,我明明只保存了这么几个字符的啊
...全文
107 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
}


这个是完整源码 java实现 大数据 Spark 可视化大屏+Kafka+SpringBoot+Vue3 【大数据毕业设计】基于Spark实时社交媒体舆情分析与趋势预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 源码+论文 完整版 数据库Mysql 随着微博、抖音、知乎、小红书等社交媒体平台的快速发展,网络舆情呈现出数据规模大、传播速度快、情绪演化复杂等特点。传统离线批处理方式难以满足舆情监测对时效性的要求,亟需构建一套能够支撑实时采集、流式计算、情感分析与趋势预测的综合系统。本文围绕“基于Spark实时社交媒体舆情分析与趋势预测”课题,设计并实现了一套前后端分离的舆情分析平台。系统后端采用Java语言与Spring Boot框架构建RESTful服务,结合JWT完成管理员身份认证与权限控制;数据处理层引入Spark思想的流式窗口统计与Kafka消息缓冲机制,对社交媒体帖文进行情感倾向识别、热度指数计算和按小时窗口聚合;趋势预测模块基于历史热度序列构建多元线性回归模型,输出未来窗口的热度预测值,并采用RMSE、MAE、MAPE等指标评价预测效果;前端采用Vue3、Vue Router、Pinia、Element Plus与ECharts实现管理后台与数据可视化大屏,支持帖文管理、话题管理、实时舆情查看、趋势对比和个人中心维护等功能。数据库选用MySQL,库名为db_social_opinion,核心业务表均以t_前缀命名,覆盖管理员、用户、平台、话题、帖文、实时统计、预测结果与误差指标等实体。测试结果表明,系统能够稳定完成舆情事件模拟、实时统计刷新与趋势预测展示,界面日期时间统一采用“2026-11-02 17:25:17”格式,满足本科毕业设计对完整性、规范性与可演示性的要求。本文工作对高校舆情教学实验、中小规模舆情监测系统原型开发具有一定

65,211

社区成员

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

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