打开/关闭/刷新流

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()重定向使用示例

 #include <stdio.h>
int main(int argc, char *argv[])
{
  FILE *fp;
  if (argc < )
  {
    fprintf("Usage:%s filename\n", argv[]);
    return -;
  }
  freopen(argv[], "w", stdout);    //将标准输入重定向为argv[1]所指定的文件。
  fprintf("after freopen!\n");
  return ;
}
输出结果将在argv[]指定的文件中

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:要刷新的流。

fopen(),fclose() 打开/关闭文件的更多相关文章

  1. 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序

    利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...

  2. open(),close() 打开/关闭文件

    Open open()是一个系统调用函数,用来打开或创建一个文件,通过不同的oflag选项实现不同功能. 使用时open()函数需要包含的头文件:<sys/types.h>,<sys ...

  3. [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

  4. PHP怎么打开或者关闭文件?

    什么是文件处理? 文件处理包括读取,关闭,重写等.掌握文件的处理需要读者理清思路,掌握好文件处理的关键步骤和常用函数,那么就可以运用自如了!感兴趣的请移步php文件处理专题. 比如,访问一个文件需要 ...

  5. PHP 文件处理----fopen(),fclose(),feof(),fgets(),fgetc()

    fopen() 函数用于在 PHP 中打开文件. 打开文件 fopen() 函数用于在 PHP 中打开文件. 此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件: < ...

  6. 标准IO: 文件的打开与关闭函数 fopen & fclose

    (1) 流(stream)和文件(file)    流和文件 在Turbo C2.0中是有区别的, Turbo C2.0 为编程者和被访问的设备之间提供了一层抽象的东西, 称之为"流&quo ...

  7. 文件操作 fopen() fclose()

    #define _CRT_SECURE_NO_DEPRECATE /*取消scanf,printf不安全之类的错误提示*/ /* fopen example */ #include <stdio ...

  8. 文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"

    char const* filename="D:/hello.txt"; 路径名使用的是“/”或者使用 转义字符“\\”: "fopen", FILE *fp= ...

  9. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

随机推荐

  1. 关于ubuntu16.04给firefox安装flash的补充

    这两天把自己的老笔记本安装了ubuntu的16.04版本,关于给firefox安装flash player的方法,网上有很多,但不知道是版本还是其它原因,他们文章都出现目录错误的问题,我个人由于是ub ...

  2. JAVA正则表达式之贪婪、勉强和侵占

    在JAVA正则表达式中量词(quantifiers)允许指定匹配出现的次数,方便起见,当前 Pattern API 规范下,描述了贪婪.勉强和侵占三种量词.首先粗略地看一下,量词X?.X??和X?+都 ...

  3. SQL2008安装重启失败

    我今天安装SQL2008的一些问题经历SQL2008安装重启失败大致出错信息如下:RebootRequiredCheck 检查是否需要挂起计算机重新启动.挂起重新启动会导致安装程序失败. 失败 需要重 ...

  4. Jquery JSOPN在WebApi中的问题

    1. 客户端代码: $.ajax({ data: { name: 'zhangsan' }, url: apiUrl.getTwo('TestFourth'), dataType: 'jsonp', ...

  5. Html.Action和Html.RederAction来创建子视图

    1. 父视图和子视图 父视图是包含了调用返回子视图的动作方法的视图. 父视图包含大部分用于呈现页面的HTML.子视图仅包含用于展示视图某部分的必须的标记. 例如,一个子视图创建一个列表,视图可能仅仅包 ...

  6. iis配置出现的问题及解决

    唯一密钥属性“value”设置…无法添加类型为add 在配置IIS7.5时,会出现 在唯一密钥属性“value”设置为“default.aspx”(或者index.asp等)时,无法添加类型为“add ...

  7. iframe顶部跳转跨域问题

    $("#button").on("click", function () {                  //  top.location.locatio ...

  8. FeatureClass的"import"(转换)功能

    /// <summary> /// FeatureClass的"import"功能. /// </summary> /// <param name=& ...

  9. Mongodb基本操作之.net

    1.下载官方for C#驱动 2.导入2个dll文件 3.连接字符串 <add key="MongoConn" value="mongodb://127.0.0.1 ...

  10. oc 多线程UI更新

    1.在子线程中是不能进行UI 更新的,而可以更新的结果只是一个幻像:因为子线程代码执行完毕了,又自动进入到了主线程,执行了子线程中的UI更新的函数栈,这中间的时间非常的短,就让大家误以为分线程可以更新 ...