几个不太常用的文件操作函数

本文介绍了标准C库中关于文件流操作的重要函数,包括错误标志清除、文件描述符转换、文件描述符获取、文件重新打开、临时文件名生成及缓冲区设置等。通过这些函数,程序员能够更高效地进行文件输入输出管理。
clearerr(清除文件流的错误旗标)
相关函数 feof
表头文件 #include<stdio.h>
定义函数 void clearerr(FILE * stream);
函数说明 clearerr()清除参数 stream 指定的文件流所使用的错误旗标。
fdopen(将文件描述词转为文件指针)
相关函数 fopenopenfclose
表头文件 #include<stdio.h>
定义函数 FILE * fdopen(int fildes,const char * mode);
函数说明 fdopen()会将参数 fildes 的文件描述词,转换为对应的文件指针后返回。参数 mode
字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于 mode
字符串格式请参考 fopen()
返回值 转换成功时返回指向该流的文件指针。失败则返回 NULL,并把错误代码存在 errno
中。
#include<stdio.h>
main()
{
    FILE * fp =fdopen(0,”w+”);
    fprintf(fp,”%s\n”,”hello!”);
    fclose(fp);
}
fileno(返回文件流所使用的文件描述词)
相关函数 openfopen
表头文件 #include<stdio.h>
定义函数 int fileno(FILE * stream);
函数说明 fileno()用来取得参数 stream 指定的文件流所使用的文件描述词。
返回值 返回文件描述词。
范例
#include<stdio.h>
main()
{
    FILE * fp;
    int fd;
    fp=fopen(“/etc/passwd”,”r”);
    fd=fileno(fp);
    printf(“fd=%d\n”,fd);
    fclose(fp);
}

freopen(打开文件)

相关函数 fopenfclose
表头文件 #include<stdio.h>
定义函数 FILE * freopen(const char * path,const char * mode,FILE * stream);
函数说明 参数 path 字符串包含欲打开的文件路径及文件名,参数 mode 请参考 fopen()
明。参数 stream 为已打开的文件指针。Freopen()会将原 stream 所打开的文件流关闭,然后
打开参数 path 的文件。
返回值 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL
并把错误代码存在 errno 中。
范例
#include<stdio.h>
main()
{
    FILE * fp;
    fp=fopen(“/etc/passwd”,”r”); 
    fp=freopen(“/etc/group”,”r”,fp);
    fclose(fp);
}
mktemp(产生唯一的临时文件名)
相关函数 tmpfile
表头文件 #include<stdlib.h>
定义函数 char * mktemp(char * template);
函数说明 mktemp()用来产生唯一的临时文件名。参数 template 所指的文件名称字符串中最
后六个字符必须是 XXXXXX。产生后的文件名会借字符串指针返回。
返回值 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL
并把错误代码存在 errno 中。
附加说明 参数 template 所指的文件名称字符串必须声明为数组,如:
char template[ ]=template-XXXXXX”;
不可用 char * template=template-XXXXXX”;
范例
#include<stdlib.h>
main()
{
    char template[ ]=”template-XXXXXX”;
    mktemp(template);
    printf(“template=%s\n”,template);
}
setbuf(设置文件流的缓冲区)
相关函数 setbuffersetlinebufsetvbuf
表头文件 #include<stdio.h>
定义函数 void setbuf(FILE * stream,char * buf);
函数说明 在打开文件流后,读取内容之前,调用 setbuf()可以用来设置文件流的缓冲区。参
stream 为指定的文件流,参数 buf 指向自定的缓冲区起始地址。如果参数 buf NULL
针,则为无缓冲 IOSetbuf()相当于调用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ)
返回值
setbuffer(设置文件流的缓冲区)
相关函数 setlinebufsetbufsetvbuf
表头文件 #include<stdio.h>
定义函数 void setbuffer(FILE * stream,char * buf,size_t size);
函数说明 在打开文件流后,读取内容之前,调用 setbuffer()可用来设置文件流的缓冲区。参
stream 为指定的文件流,参数 buf 指向自定的缓冲区起始地址,参数 size 为缓冲区大小。
返回值
setlinebuf(设置文件流为线性缓冲区)
相关函数 setbuffersetbufsetvbuf
表头文件 #include<stdio.h>
定义函数 void setlinebuf(FILE * stream);
函数说明 setlinebuf() 用 来 设 置 文 件 流 以 换 行 为 依 据 的 无 缓 冲 IO 。 相 当 于 调
:setvbuf(stream,(char * )NULL,_IOLBF,0);请参考 setvbuf()
返回值
setvbuf(设置文件流的缓冲区)
相关函数 setbuffersetlinebufsetbuf
表头文件 #include<stdio.h>
定义函数 int setvbuf(FILE * stream,char * buf,int mode,size_t size);
函数说明 在打开文件流后,读取内容之前,调用 setvbuf()可以用来设置文件流的缓冲区。
参数 stream 为指定的文件流,参数 buf 指向自定的缓冲区起始地址,参数 size 为缓冲区大
小,参数 mode 有下列几种
_IONBF 无缓冲 IO
_IOLBF 以换行为依据的无缓冲 IO
_IOFBF 完全无缓冲 IO。如果参数 buf NULL 指针,则为无缓冲 IO
返回值
ungetc(将指定字符写回文件流中)
相关函数 fputcgetchargetc
表头文件 #include<stdio.h>
定义函数 int ungetc(int c,FILE * stream);
函数说明 ungetc()将参数 c 字符写回参数 stream 所指定的文件流。这个写回的字符会由下
一个读取文件流的函数取得。
返回值 成功则返回 c 字符,若有错误则返回 EOF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值