以下两个函数为标准I/O库提供创建临时文件的:
#include <stdio>
char* tmpnam(char *ptr);//返回值为指向唯一路径名的指针
FILE* tmpfile(void);//成功返回文件指针,出错返回NULL
以上两个函数需要说明以下三点:
- 如果ptr为NULL,则所产生的路径名存放在一个静态区中,后续调用tmpnam时会重写静态区。
- 如果ptr不是NULL,则认为至少应该时长度为L_tmpnam个字符的数组。
- tempfile创建一个临时二进制文件,关闭文件或者结束程序的时候自动删除这种文件。
example:
#include "apue.h"
int main()
{
char name[L_tmpnam],line[MAXLINE];
FILE *fp;
printf("%s\n",tmpnam(NULL));
tmpnam(name);
printf("%s\n",name);
if((fp=tmpfile())==NULL)
err_sys("tempfile error");
fputs("one line of output\n",fp);
rewind(fp);
if(fgets(line,sizeof(line),fp)==NULL)
err_sys("fgets error");
fputs(line,stdout);
exit(0);
}
输出的结果为: