函数原型

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;

fwrite与fread的更多相关文章

  1. fwrite和fread函数的用法小结(转)

    fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出. #include <stdio.h> size_t fread(void * ...

  2. C语言fprintf, fwrite, fscanf, fread混用问题

    int main(int argc, const char * argv[]) { // insert code here... FILE * fp = fopen("test.txt&qu ...

  3. open()、fwrite()、fread()函数使用说明与示例

    fopen()函数: 1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针. 2.函数原型: FILE * fopen(const char * path,const ...

  4. fopen()、fwrite()、fread()函数使用说明与示例

    fopen()函数: 1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针. 2.函数原型: FILE * fopen(const char * path,const  ...

  5. C/C++读写文件的几种方法fstream fopen、fwrite()、fread()操作

    C中采用的主要是文件指针的办法,C++中对文件的操作主要运用了"文件流"(即非标准的输入输出)的思想 c读写文件fopen C 库函数 FILE *fopen(const char ...

  6. NX二次开发-C语言文件读写fwrite和fread函数

    NX9+VS2012 #include <uf.h> #include <stdio.h> UF_initialize(); /* //设置文件路径 const char* f ...

  7. C语言中的fread和fwrite

    C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...

  8. fopen /open,read/write和fread/fwrite区别

    fopen /open,read/write和fread/fwrite区别         转载URL:http://hi.baidu.com/%B9%C8%C9%F1%B2%BB%CB%C0jdp/ ...

  9. fread和fwrite用法小结

    fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出. #include <stdio.h>size_t fread(void *p ...

随机推荐

  1. servlet对应.net中的http上下文

    java中的servlet在.net中其实就是http上下文.

  2. IO模型之阻塞IO

    1. IO模型的介绍 首先我们先来熟悉下什么是 同步,异步.阻塞.非阻塞 的知识: 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞 ...

  3. Julia - 整数型

    所有的基础数据类型通过灵活用户可扩展的类型提升系统 ,不需显式类型转换,就可以互相运算 整数的默认类型,取决于系统是 32 位还是 64 位 julia> typeof(1) # 32 位系统 ...

  4. Keil MDK 和 IAR 两款ARM开发工具区别比较

    首先要说明,没有那款开发工具是万能的,也没有那款工具在所有方面都具有绝对优势.对于Keil MDK-ARM和IAR两款工具择,可以根据自己的习惯来选择,而不应该在使用其中的一款时贬低另外一款,或者总是 ...

  5. 为什么stm32有的外设在进行初始化的时候需要将寄存器重设为缺省值?不设置会怎么样?

    首先,缺省值就是默认值的意思,默认值可以理解为设计芯片的人认为用这个参数,比较适中,起码不可能耽误你对某一模块进行驱动.然后,为什么除了默认值(缺省值),还有这么多其他的参数可以进行选择呢,那就要看你 ...

  6. leetcode706

    class MyHashMap { public: vector<int> hashMap; /** Initialize your data structure here. */ MyH ...

  7. leetcode278

    /* The isBadVersion API is defined in the parent class VersionControl. bool IsBadVersion(int version ...

  8. 跟我学算法聚类(kmeans)

    kmeans是一种无监督的聚类问题,在使用前一般要进行数据标准化, 一般都是使用欧式距离来进行区分,主要是通过迭代质心的位置 来进行分类,直到数据点不发生类别变化就停止, 一次分类别,一次变换质心,就 ...

  9. Python基础学习八 写日志

    import logging from logging import handlers class Logger(object): level_relations = { 'debug': loggi ...

  10. [Python Study Notes]pynput实现对鼠标控制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...