首页 > 代码库 > 文件块读写-使用fread和fwrite

文件块读写-使用fread和fwrite

<style></style>

通常使用fprintffscanf进行对文件的格式化读写,但是因为读写的过程中要进行转码,因此

那么可以通过freadfwrite进行对数据块的读写。

函数定义为

size_t fread(void *buffer,size_t numbyte,size_t count, FILE *fp);size_t fwrite(const void *buffer,size_t numbyte,size_t count, FILE *fp);

 参数含义,buffer-数据块首地址,numbyte-单个数据块的大小,count-要写入的数据块个数,fp-要写入的文件

,对于读函数参数含义类似,就是buffer是存储读到的数据块的位置。

进行数据块的存储可以整体保存数组,结构体对象。

 

例如:

 1 #include<stdio.h> 2 #include<malloc.h> 3  4 struct node 5 { 6     int x; 7     int y; 8 }; 9 10 int main(void)11 {12     struct node *b;13     b=(struct node *)malloc(sizeof(struct node));14 15     (*b).x=20;16     (*b).y=30;17 18     printf("%d,%d\n",(*b).x,(*b).y);19 20     FILE *fp;21     22     fp=fopen("file.txt","w+");23     fwrite(b,sizeof(struct node),1,fp);24 25     fclose(fp);26 27     fp=fopen("file.txt","r+");28     struct node *c;29     c=(struct node *)malloc(sizeof(struct node));30     fread(c,sizeof(struct node),1,fp);31 32     fclose(fp);33     printf("(%d,%d)\n",c->x,c->y);34     return 0;35 }

 

可以是用typedef定义结构体,

注意写入文件完毕之后必须保存,否则数据可能丢失。

 

字符串和数组整体写入和读取

 1 #include<stdio.h> 2 #include<malloc.h> 3  4 int main(void) 5 { 6     char name[]="helloworld"; 7     printf("%s\n",name); 8  9     FILE *fp=fopen("file","w+");10     fwrite(name,sizeof(name),1,fp);11     fclose(fp);12 13     char *temp;14     fp=fopen("file","r+");15     fread(temp,sizeof(name),1,fp);16     fclose(fp);17 18     printf("%s\n",temp);19     return 0;20 }

 

文件块读写-使用fread和fwrite