unix环境编程 第五章 5.5 打开流

下面三个函数打开一个标准I/O流

#include <stdio.h>
FILE* fopen(const char* restrict filename, const char* restrict type);
FILE* freopen(const char* restrict filename, const char* restrict type, FILE* restrict fp);
FILE* fdopen(int filedes, char* type);
#成功返回文件指针,出错,返回NULL

type参数指定对该I/O流的读写方式,ISO C规定type参数可以有15中不同的值,如下:

关于这个表格有两点说明:

当以读和写类型打开一个文件时,具有下面的限制:

  • 如果中间没有fflush,fseek,fsetpos或者rewind,则在输出的后面不能直接跟随输入
  • 如果中间没有fseek,fsetpos或者rewind,或者一个输入操作没有到达文件尾端,再在输入操作之后不能直接跟随输出。 
  • 在指定w和a类型创建一个新文件时,需要使用如下的权限位集来创建文件:

     S_IRUSR | S_IWUSR | S_IPGRP | S_IWGRP | S_IROTH | S_IWOTH 

1.fopen函数

FILE *fopen(const char *filename, const char *type)

   打开一个路径名为filename的指定文件

  • filename -- 这是 C 字符串,包含了要打开的文件名称。
  • type-- 这是 C 字符串,包含了文件访问模式

TIP:fopen和open的不同:

  • open属于低级IO,fopen是高级IO。
  • open返回一个文件描述符,fopen返回一个文件指针。
  • open无缓冲,fopen有缓冲。
  • open与 read, write 等配合使用, fopen与 fread, fwrite等配合使用。
  • fopen是在前者的基础上扩充而来的,在大多数情况下,用fopen。
  • fopen() 是 C 标准库中的函数,而 open() 是 Linux 中的系统调用函数。

2.freopen函数

#include<stdio.h>
int main()
{
   freopen("in.txt","r",stdin);//输入重定向,输入数据将从in.txt文件中读取
   freopen("out.txt","w",stdout);//输出重定向,输出的数据保存在out.txt中
   int a,b;
   scanf("%d %d",&a,&b);
   printf("%d\n",a+b);
   fclose(stdin);
   fclose(stdout);
   return 0;
}

其中in.txt中我们设定的内容为“2 6”,输出结果为8.

调用fclose关闭打开的流。

上内容来源于网络,仅作本人学习笔记使用,关于本书请参APUE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值