zoukankan      html  css  js  c++  java
  • 怎样解决使用feof()函数时出现的问题?

    feof函数

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


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

    可以仔细看看,实在看不懂,我写的整个程序在这     职工信息管理系统      ,打开看看完整的也可以!
  • 相关阅读:
    【Android N 7.1.1】 屏幕亮和灭的处理地方
    Android 测量调用方法耗时的方法
    【Android M】获取屏幕锁定的相关信息:“无”,“滑动”,“PIN码”,"图案","密码"
    【Android N 7.1.1】 ActivityManagerService 获取cpu状态
    Android 判断当前是否在跑monkey测试
    【Android N 7.1.1】 锁屏之上显示Toast
    【Android N 7.1.1】 处于锁屏界面时可以转屏
    【Android N 7】使用量统计usagestats
    #### 批处理命令 获取当前目录下所有文件的路径
    Linux命令 swap:内存交换空间
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232171.html
Copyright © 2011-2022 走看看