linux标准文件编程库(高级文件编程)
在标准库中,结构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;
文件
相关新闻>>
- 发表评论
-
- 最新评论 更多>>