feof函数

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

c = fgetc(fp);  

while(!feof(fp)) 

{

  printf("%x\n",c);

  c = fgetc(fp);
}

可是我粘到我的程序里面后发现并没卵用,依旧出错,一气之下重来,自己解决!最终用了个笨方法,但是毕竟解决了!
下面代码是使用此方法的一个函数:
void readWorkerput ()           //运行前把文件内容读取到电脑内存
{ FILE *fp;
fp=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt
if(fp==NULL)
{
printf("无法打开文件\n");
exit(0); //-------- 终止程序 ---------
} int i=0;
while(!feof(fp))
{
WORK *p=(WORK *)malloc(sizeof(WORK));
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);
i++;
}
fclose(fp);
FILE *FP;
FP=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt
if(FP==NULL)
{
printf("无法打开文件\n");
exit(0); //-------- 终止程序 ---------
}
int b=i-1;
int j=1;
if(i==1)
{
fclose(FP);
}
else
{
while(!feof(FP))
{
WORK *n=(WORK *)malloc(sizeof(WORK));
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);
//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);
addworker(n);
n=n->next;
if(j==b)
break;
j++;
}
fclose(FP); //----关闭文件-----
}
}

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

怎样解决使用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. mysql 几个坑

    浮点转int类型 更新合并换成插入 不要频繁更新超过20个字节的字段 程序逻辑得到数据处理后才还回连接

  2. Debian8.8解决双系统访问windows磁盘时,有时能成功挂载,有时不能成功挂载的情况

    1.确保在debian下安装了挂载工具.2.进入windows关闭windows快速启动功能,关闭办法是控制面板,在电源管理中,选择关闭盖子的功能,点击“更改不能更改的选项”,去掉快速启动的钩,重启进 ...

  3. Java之异常的处理(try-catch)

    import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java. ...

  4. vitual box 虚拟机调整磁盘大小 resize partiton of vitual os

    key:vitual box, 虚拟机,调整分区大小 引用:http://derekmolloy.ie/resize-a-virtualbox-disk#prettyPhoto 1. 关闭虚拟机,找到 ...

  5. drf框架概况-resful接口规范-请求模块-渲染模块-Postman-drf请求生命周期

    drf框架 全称:django-rest- framework 知识点: """ 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码-基于restful ...

  6. ZJNU 1130 - 龟兔赛跑——中高级

    只需求出乌龟最短耗时跟兔子耗时比即可将起点 0 和终点 N+1 也看做充电站,进行动态规划对第i个点进行动态规划,则可以得到状态转移方程为dp[i] = max{dp[j]+time[i][j]} j ...

  7. Java--java中的基本数据类型以及对应的包装类

    基本数据类型 序号 数据类型 长度(位数) 默认值 1 byte(整数型) 8 0 2 short(整数型) 16 0 3 int(整数型) 32 0 4 long(整数型) 64 0 5 float ...

  8. LeetCode No.136,137,138

    No.136 SingleNumber 只出现一次的数字 题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复 ...

  9. day32-socketserver

    #socketserver 是在socket基础上进行了封装,它让server可以实时跟多个client进行通信. #thread线程:一个程序有一个线程,一个线程是调度cpu的最小单位.程序运行才产 ...

  10. Linux基本操作_20191117

    VMware和Ubuntu的安装, 想来想去,还是需要安装,不能老是使用Windows的,后面还有很多都要用到Linux系统的,这个可以说是开发人员必备的了, 基本的使用: 1,Windows下面C: ...