使用C文件处理更改本地路径上的文件名?

时间:2011-07-22 16:35:38

标签: c file file-io

FILE *fp;
fp=fopen("c:\\test.txt", "r");
int fgetc (FILE *fp);
int fputc( int c, FILE *fp );

有没有办法更改计算机中已存在的文件名? 如果是,那么我该如何引用该文件? 使用指针我们只能引用文件的内容...所以有没有引用文件名的方法??? 以下是我在C中引用文件的方式:

3 个答案:

答案 0 :(得分:5)

使用rename功能。

if (rename("c:\\test.txt", "c:\\newname.txt") == -1) {
    perror("rename of c:\\test.txt failed");
    exit(EXIT_FAILURE);
}

编辑:正如托马斯在答案中指出的那样,你也需要#include <stdio.h>。有关详细信息,请参阅友好的C参考手册。

编辑:rename是C标准的一部分(1989和1999两个版本)。

答案 1 :(得分:3)

#include&lt; stdio.h&gt;

int rename(const char * oldpath,const char * newpath);

答案 2 :(得分:2)

POSIX说rename()在失败时返回-1,但C标准只表示它返回一些非零值。 (两者都说它在成功时返回0。)如果您将比较从== -1更改为!= 0,它将在POSIX和非POSIX系统上正常工作。

注意#include <stdio.h>提供了rename()和所有其他标准I / O函数的声明;试图自己声明它们是不必要的,可能会导致问题。