# rename

< c‎ | io

定义于头文件 `<stdio.h>` |  |
int rename( const char *old_filename, const char *new_filename ); |  |

更改文件的文件名。该文件以 `old_filename` 所指向的字符串标识。新文件名以 `new_filename` 所指向的字符串标识。

若 `new_filename` 存在，则行为是实现定义的。

### 参数

old_filename | - | 指向包含标识要重命名的文件的路径的空终止字符串的指针
new_filename | - | 指向包含文件新路径的空终止字符串的指针

### 返回值

成功时为 ​0​ ，失败时为非零值。

### 注意

POSIX 指定许多关于此函数语义的附加细节。

### 示例

    #include <stdio.h>
    int main(void)
    {
        FILE* fp = fopen("from.txt", "w"); // 创建文件 "from.txt"
        if(!fp) { perror("from.txt"); return 1; }
        fputc('a', fp); // 写入到 "from.txt"
        fclose(fp);

        int rc = rename("from.txt", "to.txt");
        if(rc) { perror("rename"); return 1; }

        fp = fopen("to.txt", "r");
        if(!fp) { perror("to.txt"); return 1; }
        printf("%c\n", fgetc(fp)); // 从 "to.txt" 读取
        fclose(fp);
    }

输出：

    a

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.21.4.2 The rename function (p: 302-303)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.19.4.2 The rename function (p: 268-269)

- C89/C90 标准（ISO/IEC 9899:1990）：

  - 4.9.4.2 The rename function

### 参阅

remove | 删除文件 (函数)