| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:求教关于文件指针的问题
只看楼主 加入收藏
sojod
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-10-4
收藏
 问题点数:0 回复次数:1 
求教关于文件指针的问题

功能:向文件stu中写入一条记录并重新读到屏幕上. #include <stdio.h> #define SIZE 100 typedef struct {char s_name[10]; long s_id; }STUDENT;

void main () { STUDENT stud[SIZE],astud; FILE *fp; int count;/*count of records*/ count=0;

printf("\nNAME:");scanf("%s",astud.s_name); printf("\nID:");scanf("%ld",&astud.s_id);

fp=fopen("stu","wb"); fwrite(&astud,sizeof(STUDENT),1,fp);/*write one record to 'stu' */ fclose(fp); fp=fopen("stu","rb"); while (!feof(fp))/*read all the records and print on the screen*/ {fread(&stud[count],sizeof(STUDENT),1,fp); printf("%-10s%-12ld\n",stud[count].s_name,stud[count].s_id); count++; } printf("count=%d",count); fclose(fp); 为什么我输入一个记录,却会打印两条,后一条为随机数,count显示为2. 是不是fread函数用错了,请问fread后文件指针fp中的位置项会指向哪里,是记录头还是尾? 谢谢!!!!!!

搜索更多相关主题的帖子: 指针 文件 
2005-10-04 17:22
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
因为第二次才能读到结束符。
while (!feof(fp))/*read all the records and print on the screen*/
  {fread(&amp;stud[count],sizeof(STUDENT),1,fp);
   printf("%-10s%-12ld\n",stud[count].s_name,stud[count].s_id);
count++; }

改成
while (!feof(fp))/*read all the records and print on the screen*/
  {
     if( fread(&amp;stud[count],sizeof(STUDENT),1,fp) == 1)
     {
          printf("%-10s%-12ld\n",stud[count].s_name,stud[count].s_id);
          count++;
      }
 }就行了

程序和身体一样,健壮,再健壮! 我爱C++
2005-10-05 17:51
快速回复:求教关于文件指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013399 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved