Chinaunix首页 | 论坛 | 博客
  • 博客访问: 986353
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-11-04 14:54:07

5.5 opening a stream

#include

 

FILE *fopen(const char *restrict pathname, const

 char *restrict type);

 

FILE *freopen(const char *restrict pathname, const

 char *restrict type,

              FILE *restrict fp);

 

FILE *fdopen(int filedes, const char *type);

 

All three return: file pointer if OK, NULL on error

 

有三个参数可以使用,要么是文件路径,要么是一个FILE object,要么是一个file descriptor 那么我们提供使用者三个参数的函数用来打开文件,于是就有了不同的需求:

1.  通过路径指定要打开的文件流,生成一个FILE对象

2.  将一个已存在的FILE对象与一个路径结合起来,如果FILE已经对应了一个打开的流,那么先关闭。这样可以实现在standard i/o层面的重定向。因为这个操作一般都是对stdin,stdout,stderr进行操作。所以他会将stdin等流对应的具体的文件由标准输入变为一个具体的文件。

3.  为一个已存在的descriptor建立一个FILE对象,对象的内容会根据descriptor的对应的文件的数据进行更新。

 

#include

 

int fclose(FILE *fp);

 

Returns: 0 if OK, EOF on error

关闭一个流的时候,会将buffer里的数据还没有写出去的会被flush出去,还没有读取的会被discard

在程序正常退出的时候,如果有流没有关闭,会自动关闭。

 

阅读(571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~