函数原型

size_t fread(void *buffer, size_t size, size_t count, FILE *stream);  
size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream);  

功能

fread和fwrite用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构体或者一个定长数组。参数size指出一条记录的长度,而count指出要读或写多少条记录,这些记录在ptr所指的内存空间中连续存放,共占size * count个字节,fread从文件stream中读出size  * count个字节保存到buffer中,而fwrite把buffer中的size,count个字节写到文件stream中。

头文件

#include<stdio.h>

返回值

  返回值:读或写的记录数,成功时返回的记录数等于count,出错或读到文件末尾时返回的记录
数小于count,也可能返回0。

说明

(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针
(5)返回实际写入的数据项个数count。

例:

例1:fwrite

/****************fwrite*******************/
#include <stdio.h>
#include <stdlib.h> struct record {
char name[];
int age;
}; int main(void)
{
struct record array[] = {{"Ken", }, {"Knuth", }};
FILE *fp = fopen("recfile", "w");
if (fp == NULL) {
perror("Open file recfile");
exit();
}
fwrite(array, sizeof(struct record), , fp);
fclose(fp);
return ;
}

例2:fread

/*****************fread*********************/
#include <stdio.h>
#include <stdlib.h> struct record {
char name[];
int age;
}; int main(void)
{
struct record array[];
FILE *fp = fopen("recfile", "r");
if (fp == NULL) {
perror("Open file recfile");
exit();
}
fread(array, sizeof(struct record), , fp);
printf("Name1: %s\tAge1: %d\n", array[].name, array[].age);
printf("Name2: %s\tAge2: %d\n", array[].name, array[].age);
fclose(fp);
return ;
}

例3:将一个字符串写入文件:

char *str="hello,I am a test program!";
fwrite(str,sizeof(char),strlen(str),fp)

例4:将一个字符数组写入文件:

char str[]={'a','b','c','d','e'};
fwrite(str,sizeof(char),sizeof(str),fp)

3.将一个整型数组写入文件:

 int a[]={,,,,};
fwrite(a,sizeof(int),nmemb,fp);

注:

1、在定义文件指针时,要将文件指针指向空;如 FILE *fp = NULL;
2、文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用内存泄露和在下次访问文件时出现问题。
3、文件关闭后,需要将文件指针指向空,这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp = NULL;

最新文章

  1. 【目录】JUC集合框架目录
  2. Git 如何只更新项目中某个目录里的文件
  3. 2、Runtime Area Data
  4. 去掉comments
  5. C#过滤Html标签及空格
  6. ecshop换用redis做缓存
  7. hdu 1253 胜利大逃亡(广搜,队列,三维,简单)
  8. RNN-theano代码解析
  9. 关于使用百度ueditor时的一些问题
  10. Coursera Machine Learning 学习笔记(十二)
  11. 线性判别分析算法(LDA)
  12. phper談談最近重構代碼的感受(1)
  13. window nfs 服务端配置安装
  14. 3433: [Usaco2014 Jan]Recording the Moolympics
  15. Nio经典工作方式
  16. spring的list ,set,map,properties注入(set,get注入)
  17. hdu3037 Saving Beans
  18. Python字符编码详解(转)
  19. 爬虫工具fiddle在firefox浏览器中的使用
  20. 详解MySQL表空间以及ibdata1文件过大问题

热门文章

  1. JS实战应用之做LOL领图标任务~
  2. libvirt- Virsh 所有命令详单
  3. Django 组件-cookie 与 session
  4. MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引
  5. VS编译静态库 .lib 其中Release 版本比Debug版本要大好多原因
  6. ASP .NET core 入门基础内容备份
  7. href 和src 的区别
  8. js引用类型赋值,深拷贝与浅拷贝
  9. SpringBoot 项目打war包 tomcat部署
  10. solr配置相关:约束文件及引入ik分词器