zoukankan      html  css  js  c++  java
  • fopen(),fclose() 打开/关闭文件

    打开/关闭/刷新流

    1. fopen() 打开流

    功能:

      1)fopen()打开由 path指定的一个文件。

      2)fdopen()获取一个先有的文件描述符,并使一个标准的I/O流与该描述相结合。此函数常用于由创建管道和网络通信函数小所返回的描述符。因为这些特殊类型的文件不能用标准I/O fopen函数打开,我们必须先调用设备专用函数以获得一个文件描述符,然后用fopen使一个标准I/O流与该描述符相关联。

      3)fropen()在一个指定的流上打开一个指定的文件,如若该流已经打开,则先关闭该流。若流已经定向,这fopen清除该定向。吃函数一般用于将一个指定的文件代开为一个预定流,如:标准输入、标准输出和标准错误。

    所需头文件:<stdio.h>

    函数原型:

      FILE *fopen(const char *path, const char *mode);

      FILE *freopen(const char *path, const char *mode, FILE *stream);

      FILE *fdopen(int fd, char *mode);

    参数:

      fopen: path 将要的打开的指定文件的绝对路径; mode 文件打开的方式。

      freopen: path 要重定向的文件绝对路径,mode 文件打开方式, stream 已经打开的流。

      fdopen:fd 已经打开的文件描述符, mode 文件打开方式。

    返回值:

      成功:流指针  失败:NULL

    参数mode:

      r,rb:以只读方式打开文件,文件必须已经存在

      对应文件I/O:open(path, O_RDONLY);

      r+,rb+:以读写方式打开文件,文件必须存在

      w,wb:以只写方式打开文件,若文件存在,则将该文件内容清空;若文件不存在,则创建文件。

      w+,wb+:以读写方式打开文件,若文件存在,则将该文件内容清空;若文件不存在,则创建文件。

      a,ab:以追加方式只写打开文件,若文件不存在,则创建文件;若文件存在,写入的数据会被追加到文件末尾,文件原先的内容保留。

      a+,ab+:以追加方式可读写打开文件,若文件不存在,则创建文件;若文件存在,写入的数据会被追加到文件末尾,文件原先的内容保留。


    frepen()重定向使用示例

     1 #include <stdio.h>
     2 int main(int argc, char *argv[])
     3 {
     4   FILE *fp;
     5   if (argc < 2)
     6   {
     7     fprintf("Usage:%s filename
    ", argv[0]);
     8     return -1;
     9   }
    10   freopen(argv[1], "w", stdout);    //将标准输入重定向为argv[1]所指定的文件。
    11   fprintf("after freopen!
    ");
    12   return 0;
    13 }
    14 输出结果将在argv[1]指定的文件中

    2. fclose()关闭流

    功能:关闭一个文件流

    所需头文件 <stdio.h>

    函数原型:

      int fclose(FILE *fp);

    参数:

      fp :要关闭的流。

    返回值:

      调用成功返回0;失败返回EOF并设置errno

      值得注意的是,fclose()在关闭流之前,会先将缓冲区里的数据输出,如果标准I/O库已经为该流分配了一个缓冲区,则释放缓冲区。

      当一个进程正常终止时(直接调用exit()函数<_exit()终止的进程不会刷新流>,或从main函数返回),则所有带有未写缓存数据的标准I/O都会被刷新,所有代课的标准I/O都被关闭。


    3. 刷新流

    功能:强制刷新一个流。此函数使该流所有未写的数据都被传递到内核。

    函数原型:

      int fflush(FILE *fp);

    参数:

      fp:要刷新的流。

  • 相关阅读:
    python例子-开始一个Django项目
    python例子-Django常用命令
    PHP
    Yii 关于 find findAll 查找出制定的字段的方法
    new static() 和 new self() 的区别异同
    Android
    PHP里10个鲜为人知但却非常有用的函数
    PHP 各种函数
    Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
    PHP中使用curlL实现GET和POST请求的方法
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6024559.html
Copyright © 2011-2022 走看看