zoukankan      html  css  js  c++  java
  • fopen,fwrite,fread使用

    fopen, fwrite, fread详解

    1、头文件

    #include <stdio.h>

    2、fopen

    (1) 函数原型

    FILE *fopen(char *filename, *type)

    函数用来打开一个文件

    (2) 参数解析

    • filename,文件名
    • type,打开方式

      字符及其含义:

      打开方式由r,w,a,t,b,+这六个字符拼成,含义如下

      r(read):读

      w(write):写

      a(append):追加

      t(txt):文本文件,可省略

      b(banary):二进制文件

      "r"            打开文字文件只读          

      "w"           创建文字文件只写         

      "a"           增补, 如果文件不存在则创建一个     

      "r+"          打开一个文字文件读/        

      "w+"         创建一个文字文件读/          

      "a+"         打开或创建一个文件增补          

      "b"           二进制文件(可以和上面每一项合用)          

      "t"           文这文件(默认项)  

      使用方式及含义
      “rt”      只读打开一个文本文件,只允许读数据 
      “wt”      只写打开或建立一个文本文件,只允许写数据
      “at”      追加打开一个文本文件,并在文件末尾写数据
      “rb”      只读打开一个二进制文件,只允许读数据
      “wb”        只写打开或建立一个二进制文件,只允许写数据
      “ab”        追加打开一个二进制文件,并在文件末尾写数据
      “rt+”       读写打开一个文本文件,允许读和写
      “wt+”      读写打开或建立一个文本文件,允许读写
      “at+”       读写打开一个文本文件,允许读,或在文件末追加数 
      “rb+”       读写打开一个二进制文件,允许读和写 
      “wb+”      读写打开或建立一个二进制文件,允许读和写
      “ab+”       读写打开一个二进制文件,允许读,或在文件末追加数据

      ① 用”r”打开文件时,该文件必须存在,只读

      ② 用”w”打开文件时,若文件不存在,则创建,若存在,则将其删除,再创建一个文件

      ③ 用”a”打开文件时,可在其末尾写数据

    (3) 函数调用成功返回FILE*指针,失败返回NULL

    3、fwrite

    (1) 函数原型

    size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream )

    (2) 参数解析

    • ptr,要写入的数据的指针
    • size,每个数据类型的大小
    • count,数据个数
    • stream,文件指针

    (3) 函数调用成功返回写入数据的个数,如果返回值与count不同,为写错误

    (4) 写操作后最好调用fclose关闭流。

    4、fread

    (1) 函数原型

    size_t fread ( void * ptr, size_t size, size_t count, FILE * stream )

    (2) 参数解析

    • ptr,读取数据保存结果的指针
    • size,每个数据类型的大小
    • count,数据个数
    • stream,文件指针

    (3) 函数调用成功返回读取的数据个数,如果返回值与count不同,为读错误或者达到文件末尾

    5、不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针

    6、size_t

    size_t类型是ANSI C提供的标准头文件里的一个数据类型,头文件为:#include <stddef.h>。该头文件一般位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录下。定义如下:

    #define  __SIZE_TYPE__  long unsigned int

    #define  __SIZE_TYPE__  size_t

    也就是说size_t实际是long unsigned int类型,在32位机器上为4字节,在64位机器上为8字节。

    7、程序示例:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     FILE* file = fopen("/home/share/code/fopen_test/test.txt", "wt+");
     6     if(file == NULL)
     7     {
     8         printf("fopen error");
     9         return -1;
    10     }
    11     
    12     size_t write_ret = fwrite("hello world", 1, sizeof("hello world"), file);
    13     if(write_ret != sizeof("hello world"))
    14     {
    15         printf("fwrite error");
    16         return -1;
    17     }
    18     
    19     //将文件指针定位到文件开始,否则读取不到数据
    20     fseek(file, 0, SEEK_SET);
    21     
    22     char buf[32] = {0};
    23     size_t read_ret = fread(buf, 1, sizeof("hello world"), file);
    24     if(read_ret != sizeof("hello world"))
    25     {
    26         printf("fread error");
    27         return -1;
    28     }
    29     
    30     fclose(file);
    31     printf("%s
    ", buf);
    32     
    33     return 0;
    34 }
  • 相关阅读:
    Vsphere日记01.ESXi5.5.install
    Linux快速计算MD5和Sha1命令
    在linux虚机中装vmtools
    BT下载原理分析
    虚拟防火墙实验
    简单介绍一下vue2.0
    小白编程系列(一):编程语言选择
    html几种美丽的分割线
    利用:header匹配所有标题做目录
    markdown编辑器的小建议
  • 原文地址:https://www.cnblogs.com/fangyan5218/p/10645961.html
Copyright © 2011-2022 走看看