在许多文件处理应用中,你可能对创建一个新的文件不感兴趣,但是对修改已存在的文件感兴趣。修改文件的过程称为更新文件。这不像想象的那么简单。
在大多数系统中,如果一个文件因为输入而打开着,再要为输出打开它是不合法的。根据文件在特定的系统中实现的方式不同,fopen的调用可能失败或者破坏文件中的内容。
更新文件最普遍的方法是:先写新数据到临时文件中,然后更新文件的整个内容之后,用临时文件替换原有文件。因此,如果希望编写程序来更新已有的文件,该程序下面的步骤组成:
1)打开原有的输入文件;
2)打开一个不同名的临时输出文件;
3)把输入文件复制到临时文件,执行希望的更新操作;
4)关闭两个文件;
5)删除原始文件;
6)用原始文件的名称重命名临时文件;
为了实现这个策略,需要用到3个来自stdio.h接口的函数:tmpnam、remove和rename。
尽管你可以为临时文件自由地选择名称,但是在stdio.h接口中有一个tmpnam函数可以生成临时文件。临时文件的约定,随一台机器的不同而不同。调用tmpnam(null)函数返回一个适合机器的临时文件名。因此,可以使用下面的编码创建和打开一个新的临时文件:
temp = tmpnam(NULL);
outfile = fopen(temp,"w");
为了删除一个文件,只需要调用remove(name)就可以了,其中的name是该文件的名称。重命名文件也很简单,可以通过调用rename(old name, new name