首页 理论教育 C语言程序设计:快速读写文件数据块

C语言程序设计:快速读写文件数据块

时间:2023-10-29 理论教育 版权反馈
【摘要】:ANSI C标准设置了fread()和fwrite()函数来读或写数据块。如果调用fread()或fwrite()成功,则函数返回值等于count。fread()和fwrite()函数一般用于二进制文件的处理。fwrite函数的作用是一次将一个长度为29字节的数据块写到文件中。

C语言程序设计:快速读写文件数据块

实际应用中,常常要求1次读/写1个数据块。数据块可以是一个整型、实型或结构体变量的值。ANSI C标准设置了fread()和fwrite()函数来读或写数据块。

1.调用形式:

int fread(void*buffer,int size,int count,FILE*fp);

int fwrite(void*buffer,int size,int count,FILE*fp);

2.功能:

fread()是从fp所指向文件的当前位置开始,一次读入size个字节,重复count次,并将读入的数据存放到从buffer开始的内存中;同时,将读写位置指针向后移动size*count个字节。

fwrite()是从buffer开始,一次输出size个字节,重复count次,并将输出的数据存放到fp所指向的文件中;同时,将读写位置指针向后移动size*count个字节。

其中:buffer是一个指针,在fread()函数中,它表示存放输入数据的首地址;在fwrite()函数中,它表示存放输出数据的首地址。

size:表示数据块的字节数。

count:表示要读写的数据块块数。

fp:表示文件指针。

如果调用fread()或fwrite()成功,则函数返回值等于count。fread()和fwrite()函数一般用于二进制文件的处理。

例如:

fread(fa,4,5,fp);

其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。

【例10.5】从键盘输入4个学生信息,保存到student.dat文件中。

程序内容如下:

1 #include<stdio.h>

2 #define SIZE 4

3 struct student

4 {

5  char name[10];

6  int num;

7  int age;

8  char addr[15];

9  }stu[4];

10 void save()(www.xing528.com)

11 {

12  FILE*fp;

13  int i;

14  if((fp=fopen(“student.dat”,”wb”))==NULL)

15  {

16   printf(“cannot open file!”);

17   return;

18  }

19  for(i=0;i<SIZE;i++)

20   if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

21    {

22     printf(“file write error\n”);

23     return;

24    }

25 }

26 int main()

27 {

28  int i;

29  printf(“enter data:name,num,age,addrees”);

30  for(i=0;i<SIZE;i++)

31   scanf(“%s%d%d%s”,&stu[i].name,stu[i].num,stu[i].age,&stu[i].addr);

32   save();

33 }

【例题中关键问题说明】

(1)在main()函数中,从键盘输入4个学生的数据。

(2)调用save函数。将这些数据保存到以student.dat命名的磁盘文件中。fwrite函数的作用是一次将一个长度为29字节(即student结构体的长度)的数据块写到文件中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈