linux标准文件编程库(高级文件编程)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 01:05 点击:

 在标准库中,结构FILE是指向文件的指针,所有对文件的操作都是通过FILE完成的,FILE指针也称为文件流,它定义在头文件<stdio.h>,
相对于整形的低级文件I/O描述符,它提供了I/O缓冲功能。
1,创建、打开、关闭与删除文件的函数族
#include<stdio.h>
FILE *fopen(const char *filename,const char *type);
FILE *freopen(const char *filename,const char *type,FIlE *strem);
int fclose(FILE * stream);
int remove(const char *filename);
int rename(const char *oldname,const char *newname);
/*filename       打开文件的名称(带路径)*/
/*Type           打开文件的方式,由权限和类型两部分组成,前者可以是r、w、a、r+、w+、a+,后者默认表示文本文件、使用b表示二进制文件*/
/*stream  已经打开的文件指针*/
函数fopen打开或创建文件;fclose关闭文件;函数freopen重新打开文件;函数remove删除磁盘文件;函数rename更改文件名称。
ex1:以只读方式打开文本文件/etc/passwd:
                    FILE *fp;
                    fp=fopen("/etc/passwd","r");
ex2:以二进制方式创建文件rr.txt:
                   FILE *fp;
                   fp=fopen("rr.txt","wb");
(只读打开'r',只写打开'w',追加'a',增强功能读写打开'+')
2)freopen函数
     本函数实现文件流的替换。它首先关闭原文件流stream,然后再以freopen的方式打开一个新的文件流,此后对原文件流的任意操作都自动转换为对新文件流的操作。成功时返回指向新文件的FILE型指针,否则返回NULL。
  Unix进程默认打开三个文件:标准输出、标准输入、标准错误输出,它们的FILE标识符号分别是stdout、stdin、stderr。函数freopen常用于将以上三个文件流重定向,实现方法如下:
/*-----------open.c------------*/
#include<stdio.h>
void main()
{
  FILE *fp;
  char *szBuf[100];
  /*将屏幕标准输出的内容重定向到文件"/tmp/1" */
  if((fp=freopen("/tmp/1","w",stderr))==NULL)
  {
     printf("stderr--/tmp/1 failed./n");
     return ;
  }
  /*stderr已经输出重定向,所有错误输出内容都将写到"/tmp/1"*/
  fputs("T Like Unix./n",stderr);
  /*关闭文件*/
  fclose(fp);
  /*将标准输入由键盘输入更改为从文件"/tmp/1"中读入*/
  if((fp=freopen("/tmp/1","r",stdin))==NULL)
  {
     printf("stdin --/tmp/1 failed./n");
     return ;
  }
  memset(szBuf,0,sizeof(szBuf));
 /*stdin 已经输入重定向,所有内容都将写入文件"/tmp/1"*/
  fgets(szBuf,sizeof(szBuf),stdin);
  printf("szBuf=[%s]",szBuf);
  fclose(fp);
}
 编译与运行:
gcc -o open.c  open
./open
szBuf = [I Like UNIX.]
3)fclose函数
   为了减少系统资源消耗、避免误改文件内容和更新文件缓冲,应该及时关闭在将来一段时间内不需要使用的文件。函数fclose关闭文件流stream,成功时返回0,否则返回EOF;
4)remove
   函数remove删除字符串filename指定的文件或目录,当filename指定文件时,remove相当于unlinke函数,当filename指定目录时,相当于rmdir;
                                          文件

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • /etc/fstab 详解
    • nginx主主集群
    •  LVS-NAT和LVS-DR模式的实现详解
    •  RHCE考试之磁盘配额
    • 学习笔记:ACL详解
    •  LVM逻辑卷管理器
    • suse linux双网卡双网关配置
    •  Nginx主主负载均衡架构
    • ubuntu学习Mysql

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1