首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥输出时打印了两个最后的name

2013-07-01 
为什么输出时打印了两个最后的name#include stdio.h#include stdlib.h struct employ{char name[10]}

为什么输出时打印了两个最后的name
#include <stdio.h>
#include <stdlib.h>



 struct employ
{
    char name[10];
        
    
}per;


void Init()
{    
    
    printf("输入姓名:");
    gets(per.name);
    
 
    
}
void readfile()
{
    
    FILE  *lp;
    if((lp=fopen("persion.dat","rb"))==NULL)
    {
        printf("\nCannot open file strike any key exit!");
        exit(1);
        
    }

    
    while(!feof(lp))
    {
    fread(&per,sizeof(struct employ),1,lp);
        
    printf("姓名%s\n",per.name);
    }
    
    fclose(lp);
    
    
}
void savefile(int n)

    FILE *fp;


    
    
    if((fp=fopen("persion.dat","rb"))==NULL)
        
        fp=fopen("persion.dat","wb+");
        
    else
        fp=fopen("persion.dat","ab+");
    
    while(n)
    {
        
    Init();
        
    fwrite(&per,sizeof(struct employ),1,fp);
        n--;
        
    }
        
        fclose(fp);
    
    
}
  main()
{
    
    
     savefile(1);
     readfile();
    system("pause");
    
}
[解决办法]
你要检查fread的返回值,失败的时候,break循环,因为第二次读的时候失败了。原因是第一次读成功了,而且读出来你指定长度的数据,所以你feof检测是正常的。但在读就不行了,并且检测到feof

热点排行