feof函数

       昨天在做一个课程设计时,一个函数的功能是将文件中的数据一条条的读到链表中去。既然不确定有多少条数据,那只能借助feof()函数了,本来文件部分就没学好,也就知道这一个方法。但是在测试的后就发现了它的问题,就是在判断是否到达文件尾的时候,它会多读一次,就导致从文件读出的部分内容是错的。可能在课堂上老师就讲到了,可是我不知道当时在干啥,反正就是不记得。更关键的是我还不知道如何去解决。然后我就毅然决然的去了百度,新浪博客,CSDN博客,博客园,等搜搜搜!最终发现了相同的一段代码,而且网上对这段代码的评价还挺高。
代码如下:
  1. int c;
  2.  
  3. c = fgetc(fp);
  4.  
  5. while(!feof(fp))
  6.  
  7. {
  8.  
  9. printf("%x\n",c);
  10.  
  11. c = fgetc(fp);
  12. }

可是我粘到我的程序里面后发现并没卵用,依旧出错,一气之下重来,自己解决!最终用了个笨方法,但是毕竟解决了!
下面代码是使用此方法的一个函数:
  1. void readWorkerput () //运行前把文件内容读取到电脑内存
  2. {
  3.  
  4. FILE *fp;
  5. fp=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt
  6. if(fp==NULL)
  7. {
  8. printf("无法打开文件\n");
  9. exit(0); //-------- 终止程序 ---------
  10. }
  11.  
  12. int i=0;
  13. while(!feof(fp))
  14. {
  15. WORK *p=(WORK *)malloc(sizeof(WORK));
  16. fscanf(fp,"%d %s %s %d %s %f %s %ld",&p->Number,p->Name,&p->Sex,&p->Old,p->Edu,&p->Salary,p->Address,&p->Tel);
  17. i++;
  18. }
  19. fclose(fp);
  20. FILE *FP;
  21. FP=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt
  22. if(FP==NULL)
  23. {
  24. printf("无法打开文件\n");
  25. exit(0); //-------- 终止程序 ---------
  26. }
  27. int b=i-1;
  28. int j=1;
  29. if(i==1)
  30. {
  31. fclose(FP);
  32. }
  33. else
  34. {
  35. while(!feof(FP))
  36. {
  37. WORK *n=(WORK *)malloc(sizeof(WORK));
  38. fscanf(FP,"%d %s %s %d %s %f %s %ld",&n->Number,n->Name,&n->Sex,&n->Old,n->Edu,&n->Salary,n->Address,&n->Tel);
  39. //printf("%d %s %s %d %s %f %s %ld\n",n->Number,n->Name,n->Sex,n->Old,n->Edu,n->Salary,n->Address,n->Tel);
  40. addworker(n);
  41. n=n->next;
  42. if(j==b)
  43. break;
  44. j++;
  45. }
  46. fclose(FP); //----关闭文件-----
  47. }
  48. }

可以仔细看看,实在看不懂,我写的整个程序在这    职工信息管理系统    ,打开看看完整的也可以!

怎样解决使用feof()函数时出现的问题?的更多相关文章

  1. php函数:解决数组转对象时数组内中文乱码问题

    function to_urlencode(&$arr){//解决数组转对象时数组内中文乱码问题 foreach($arr as $key => $value){ if(is_array ...

  2. opencv检错:程序运行过程正常,当跳出函数时出现断言错误(Debug Assertion Failed)

    转载http://blog.csdn.net/u012327581/article/details/51351780 1.问题描述 在VS2015下配置好Opencv后,程序在函数运行过程中正常,调试 ...

  3. 解决多人开发时使用window.onload的覆盖问题

    通用型小函数:解决多人开发时,同时使用window.onload事件所出现的后面的window.onload函数覆盖前面一个window.onload函数的问题. function addLoadEv ...

  4. 从文本中读取字符——feof函数问题

    feof()函数 函数原型:int feof(FILE *fp): 函数功能:检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()函数清除 (函数feof ...

  5. 面转栅格之ERROR 999999:执行函数时出错

    今天进行矢量面转栅格的操作时,总是出现ERROR 999999:执行函数时出错,如下图所示: 刚开始以为是栅格保存的路径太长的问题,后来发现是矢量面的路径问题,我的矢量面是放在自建的图层组下面,如下图 ...

  6. jQuery 源码分析:当 selector 传来一个函数时,怎么进行处理?

    本文章为 0.9 版本,将会在稍后润色更新.本文使用的 jQuery 版本为 3.4.0 我们知道使用 $ 操作符时,可以往里面塞很多类型的参数,字符串,对象,函数...,jQuery 会根据不同的参 ...

  7. php使用date()函数时,提示的警告

    转载:http://www.shangxueba.com/jingyan/121682.html 在用PHP5.3以上的PHP版本时,只要是涉及时间的会报一个: "PHP Warning: ...

  8. javascript使用parseInt函数时需要注意的一些问题

    这个问题大家可能会忽视,我在项目中就遇到了.写了提醒一下大家!!! 在用javascript的parseInt函数时,parseInt("08")或者parseInt(" ...

  9. 如何解决Mybatis 日期查询时后面带.0

    关于如何解决Mybatis 日期查询时后面带.0   MySQL数据库: 直接在MySQL查询语句中解决: SELECT T.ID, T.USERNAME, DATE_FORMAT(t.birthda ...

随机推荐

  1. 8)post方式提交和简单那处理

    带有htmll的代码: 实现简单的计算器 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  2. 筛选nginx访问日志文件中的域名

    head  -n 500 1.log |awk  '{print $11}' > 1.txt     查看1.log日志文件前500行记录并打印出第11列也就是域名的那一列,并输出到1.txt文 ...

  3. SVN服务器的搭建(二)

    上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使用. 首先打开Vi ...

  4. js获取当前页面名称

    // 取当前页面名称(不带后缀名) function pageName() { var a = location.href; var b = a.split("/"); var c ...

  5. MDS算法及其matlab实现

    问题背景: 在求解MTSP问题的时候,因为已知的为各个巡检点之间路径耗时长度,而这个具体描述采用无向图结构可以很好的描述,在matlab中通过函数(graphallshortestpaths)可以得到 ...

  6. 吴裕雄--天生自然python学习笔记:python安装配置tesseract-ocr-setup-3.05.00dev.exe

    下载地址:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.00dev.exe 点击安装,记得复制安装的路径,待会 ...

  7. C++ sizeof 运算符

    sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小. sizeof 运算符可用于获取类.结构.共用体和其他用户自定义数据类型的大小. 使用 sizeof 的语法如下: ...

  8. RDD(一)——概述

    什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象(其实是计算抽象).代码中是一个抽象类,它代表一个不可变.可分区. ...

  9. LGOJ4450 双亲数

    Description link \[\sum \limits_{i = 1}^A \sum \limits_{j = 1}^B [ \gcd(i, j) = d] \] 要\(O(\sqrt n)\ ...

  10. jQuery性能优化与技巧

    1.使用最新版本的jQuery类库 jQuery的每一个新的版本都会较上一版进行Bug修复和一些优化,同时也会包含一些创新,所以建议使用最新版本的jQuery来提高性能,需要注意的是在更换版本之后,要 ...