标题:向文件读取数据问题,请教前辈。
取消只看楼主
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
结帖率:75%
已结贴  问题点数:20 回复次数:1 
向文件读取数据问题,请教前辈。
我最近自学c语言,用的是谭浩强老师的《C程序设计》。下面是卡住我半天的一个问题,恳请前辈解疑。
程序代码:
#include <stdio.h>
#define SIZE 10
struct student_type

 {char name[10];
  int num;
  int age;
  char addr[15];

 }stud[SIZE];                // 定义全局结构体数组stud,包含10个学生数据  

void save( )                 // 定义函数save,向文件输出SIZE个学生的数据  
  {FILE *fp;
   int i;
   if((fp=fopen ("stu.dat","wb"))==NULL)    // 打开输出文件atu_list  
      {printf("cannot open file\n");
       return;
      }
   for(i=0;i<SIZE;i++)
      if(fwrite (&stud[i],sizeof (struct student_type),1,fp)!=1)
         printf ("file write error\n");
   fclose(fp);
  }

int main()
  {int i;
   printf("Please enter data of students:\n");
   for(i=0;i<SIZE;i++)           // 输入SIZE个学生的数据,存放在数组stud中  
     scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
   save( );
   return 0;
  }

如上,当运行进入save函数时,第一个if语句是判别是否能够打开文件;第二个if语句是判断函数是否执行成功。我并没有看到fwrite函数有给文件写入数据的语句呀,怎么会把数据填入磁盘呢?     难道是第二个if语句中的的fwrite函数有两重作用,一个作用是当做执行语句,另一个是做为判断的条件?
如下面这个程序,我清楚地看到了fread函数读到了一组数据。
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct student_type
  {char name[10];
   int num;
   int age;
   char addr[15];
  }stud[SIZE]; 

int main( )
  {int i;
   FILE *fp;
   if((fp=fopen ("stu.dat","rb"))==NULL)        // 打开输入文件atu.dat  
      {printf("cannot open file\n");
       exit(0) ;
      }
   for(i=0;i<SIZE;i++)
     {fread (&stud[i],sizeof(struct student_type),1,fp);       // 从fp指向的文件读入一组数据  
      printf ("%-10s %4d %4d  %-15s\n",stud[i].name,stud[i].num,stud[i]. age,stud[i].addr);
            // 在屏幕上输出这组数据 
     }
   fclose (fp);                                  // 关闭文件"stu.dat" 
   return 0;
  }


抱歉,我刚开始学,基础很薄弱,可能描述的也不清楚。您要是看不懂,我再做解释。谢谢解答!
搜索更多相关主题的帖子: 文件 数据 SIZE int 函数 
2019-08-17 00:00
wj66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2019-8-16
得分:0 
回复 2楼 zbjzbj
谢谢您!您解释的很清楚,看懂了。
我还有个很简单的问题,希望您择闲时解答一下,什么时候都可以。特别感谢!
2019-08-17 00:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496438-1-1.html




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

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