文件块读写-使用fread和fwrite

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

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

函数定义为

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 }
时间: 2024-11-20 08:53:04

文件块读写-使用fread和fwrite的相关文章

数据块I/O:fread与fwrite

函数原型: size_t fread(void *buffer,size_t size, size_t count,FILE *fp) size_t fwrite(void *buffer,size_t size, size_t count,FILE *fp) 功能:读/写数据块 返值:成功,返回读/写的块数:出错或文件尾,返回0 说明: typedef unsigned size_t; buffer: 指向要输入/输出数据块的首地址的指针 size: 每个要读/写的数据块的大小(字节数) co

C语言文件的读写

对文件的读和写是最常用的文件操作.在C语言中提供了多种文件读写的函数: 字符读写函数  :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式化读写函数:fscanf和fprinf 下面分别予以介绍.使用以上函数都要求包含头文件stdio.h. 字符读写函数fgetc和fputc 字符读写函数是以字符(字节)为单位的读写函数. 每次可从文件读出或向文件写入一个字符. 1) 读字符函数fgetcfgetc函数的功能是从指定的文件中读一个字符

函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)

函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针): 其中的n是一个正整数.表示从文件中读出的字符串不超过 n-1个字符.在读入的最后一个字符后加上串结束标志'\0'.例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入 字符数组str中. [例10.

fread和fwrite的使用

1.rread和fwrite函数 数据块I/O fread与fwrite函数原型:size_t fead(void *buffer, size_t size, size_t, count, FILE *pf)size_t frite(void *buffer, size_t size, size_t count, FILE *pf)功能:读写数据块(将内存的内容直接写入磁盘)返回值:成功,返回读/写的块数,出错或文件尾,返回0.参数含义:buffer 指向要输入/输出数据块首地址指针.size

文件操作:fread()和fwrite()

fread和fwrite函数功能 用来读写一个数据块. 一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址.对fwrite来说,是要输出数据的地址. (2)size:要读写的字节数: (3)count:要进行读写多少个size字节的数据项: (4)fp:文件型指针. 注意:1 完成次写操(fwrite())作后必须关闭流(fclose()

用fread和fwrite实现文件复制操作

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,char **argv) { FILE *fp_src,*fp_des; char buf[128]; int num; if(argc!=3) { printf("the format must be: cp_example file_src file_des\n"); exit(EXIT_FAI

fread(),fwrite() 读/写流

C 库函数 - fread() 描述 C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取数据到 ptr 所指向的数组中. 声明 下面是 fread() 函数的声明. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 参数 ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针.

C/C++关于文件的读写操作以及文件的打开和保存

通过近来的学习,总结一下关于文件的读写操作以及文件的打开和保存的方法. 一.文件的读写操作: (1)C语言对文件的读写操作 在C语言中,对文件的读写操作是用FILE结构体和常用的对文件操作的函数实现的,下面总结一下C语言中对文件操作的常用函数: fopen()   打开以文件名指定的文件 fwrite()  写文件 fread()  读文件 fseek()  移动文件的指针到新的位置通过该函数的参数设定的偏移量和初始位置 rewind()  移动文件的指针到文件流的开始位置,在通常情况下可用fs

C 文件随机读写

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void eatline(){ 5 while(getchar()!='\n') 6 continue; 7 } 8 //文件随机读写 9 int main(int argc, char * argv[]) 10 { 11 FILE *fp; 12 int offset,tel; 13 long in_stream; 14 char ch,get; 15 long pos; 16 if((