码迷,mamicode.com
首页 > 其他好文 > 详细

文件块读写-使用fread和fwrite

时间:2014-09-07 12:12:35      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   使用   ar   文件   数据   

通常使用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

标签:style   blog   color   os   io   使用   ar   文件   数据   

原文地址:http://www.cnblogs.com/lhyz/p/3960197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!