|   | #2zbjzbj2019-08-17 00:19 | 
 程序代码:
程序代码:#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;
}
#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;
}
#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;
}
抱歉,我刚开始学,基础很薄弱,可能描述的也不清楚。您要是看不懂,我再做解释。谢谢解答!