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\n", argv[0]);
 8     return -1;
 9   }
10   freopen(argv[1], "w", stdout);    //将标准输入重定向为argv[1]所指定的文件。
11   fprintf("after freopen!\n");
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:要刷新的流。

时间: 2024-12-28 00:05:03

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

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

(1) 流(stream)和文件(file)    流和文件 在Turbo C2.0中是有区别的, Turbo C2.0 为编程者和被访问的设备之间提供了一层抽象的东西, 称之为"流", 而将具体的实际设备叫做文件.流是一个逻辑设备, 具有相同的行为.因此, 用来进行磁盘文件写的函数也同样可以用来进行打印机的写入.在Turbo C2.0中有两种性质的流:   文字流( text stream)和二进制(binary stream).对磁盘来说就是文本文件和二进制文件.本软件为了便于让读

文件流:&quot;fopen&quot;,&quot;fclose&quot;,“ftell”&quot;fseek&quot;,&quot;fgets&quot;,&quot;fprintf&quot; ,“feof”,&quot;fwrite&quot;,&quot;fread&quot;

char const* filename="D:/hello.txt"; "fopen", FILE *fp=fopen(char const *name,char const mode); e.g:FILE *fp = fopen(filename,"wb"); 打开文件流,name为要打开文件的路径,如这里的filename:mode 为对文件的操作模式,通常使用:"wb"(写操作),"rb"(读操作)

打开文件和关闭文件

1 打开文件 在对文件进行读.写操作之前,首先要解决的问题是如何把程序中要读.写的文件与磁盘上实际的数据文件联系起来.在 C 语言中这并不困难,只需调用 C 语言提供的库函数 fopen “打开”文件就可实现这些联系.fopen 函数的一般调用形式为: fopen(文件名,文件使用方式); 函数返回一个指向 FILE 类型的指针.例如: FILE *fp; fp = fopen("file_a", "r"); fopen 函数调用中有两个字符串作为参数.第一个字符串

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

java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public static void main(String[] args) throws Exception{ //打开文件 //字符流方式打开 //字符流每次按一个字符读取 FileReader wj = new FileReader("D:/java/kj/javanew/src/Index.java"

Sublime Text 2中关闭记住上次打开的文件

每次编辑一个文件,Crtl+w好累,有木有?如果关闭Sublime Text记住上次打开的文件这个功能呢? 1.打开Sublime Text 2—[Preferences]—[settings—user]添加以下代码 "hot_exit": false, "remember_open_files": false 2.保存再重启试试? ps:如果出现粉色警告,请使用逗号分割代码: 我的配置: { "font_size": 12, "ign

Notepad++如何关闭最近打开的文件的历史记录功能

Notepad++是Windows 操作系统下的一套非常有特色的自由软件的纯文字编辑器(许可证:GPL),有完整的中文化接口及支持多国语言编写的 功能(UTF8 技术).它的功能比Windows中的Notepad(记事本)强大,除了可以用来制作一般的纯文本文件也十分适合当作编写电脑程序的编辑器. 我们在安装完notepad++软件后,默认情况下.每次找开文件.都会有最近打开的文件的历史记录 如果要关闭默认的记录最近打开的文件记录,可以在设置-->首选项-->备份处 把Remember curr

代码验证C#执行”文件打开关闭操作“耗时

2017-04-19 部门经理习惯用C#做数据清洗,遇到个需要验证的问题,在一个万次左右循环内对文件执行打开关闭操作,比在循环前打开文件.循环后关闭文件耗时多多少. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Diagnostics; using Sy

Linux系统编程-文件打开关闭

一.文件描述符 对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的.当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数).后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息(file结构体). 一个进程启动时,默认打开了3个文件,标准输入.标准输出.标准错误,对应文件描述符是0(STDIN_FILENO).1(STDOUT_FILENO).2(STDERR_FILENO),这些常量定义在unistd.h头文件中. 另外介绍下面两个函数: fil

linux文件操作篇 (二) 打开和关闭文件

2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>  头文件 int open(const char *pathname, int flags); 打开一个文件 int close(int fildes); 关闭一个文件 intopen(constchar*pathname, intflags);//const char *pathname 是要打开的文件路径//int