有关feof的问题

J_X_Q 2008-04-06 04:20:55
while(1){
s=fgets(s,10,fp);
fprintf(fp2,"%s",s);
if(feof(fp))break;
}

这段代码不管用。好像feof不能判断文件尾。高人指点。
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
J_X_Q 2008-04-07
  • 打赏
  • 举报
回复
哦,对了。不该有这个s=
搞定了。
gdcxhy3592 2008-04-06
  • 打赏
  • 举报
回复
问题在于:s=fgets(s,10,fp);

逻辑应该是对的,fp指针也移动了。然则s=fgets(s,10,fp)这个错了。没有s=
Inhibitory 2008-04-06
  • 打赏
  • 举报
回复
s=fgets(s,10,fp);
这里有对:

#include <stdio.h>
char *fgets( char *str, int num, FILE *stream );



函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF, str(字符串)将会以null结束.fgets()成功时返回str(字符串),失败时返回NULL.

可以参考一下:

#include <iostream>
#include <cstdio>

int main(int argc, char *argv[]) {
FILE *fp = 0;
fp = fopen("main.cpp", "r");

if (!fp) {
std::cout << "Cannot open the file." << std::endl;
return EXIT_FAILURE;
}

char line[128];
while (fgets(line, 128, fp)) {
std::cout << line;
}

// 下面这段代码也是对的,但是在程序的最后会多输出一个'}',上面的代码一切正常
// while (true) {
// fgets(line, 128, fp);
// std::cout << line;
// if (feof(fp)) {
// break;
// }
// }

fclose(fp);

return EXIT_SUCCESS;
}

  • 打赏
  • 举报
回复
没有移动文件指针/
  • 打赏
  • 举报
回复
你的代码就是错误的

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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