67-c语言删除重命名文件
在C语言中,使用
stdio.h头文件提供的remove()函数可删除文件(返回0表示成功),rename()函数可重命名文件(需在同一文件系统内,返回0表示成功),二者均需传入文件路径参数,操作失败时返回非0值。
在C语言中,文件操作是程序与外部存储交互的重要部分。要删除文件和重命名文件,可以使用标准库函数remove()和rename()。
1. 删除文件:remove()函数
函数原型
int remove(const char *filename);
用法说明
- 用于永久删除指定的文件(不会移到回收站)
- 返回值:0表示成功,-1表示失败
- 需要包含头文件
stdio.h - 不能删除目录(删除目录需使用
rmdir())
示例代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "用法: %s <要删除的文件名>\n", argv[0]);
exit(EXIT_FAILURE);
}
const char *filename = argv[1];
int result = remove(filename);
if (result == 0) {
printf("文件 '%s' 删除成功!\n", filename);
} else {
perror("文件删除失败");
fprintf(stderr, "错误:无法删除文件 '%s'。\n", filename);
}
return 0;
}
使用注意事项
- 文件必须存在,否则会返回错误
- 需要对文件所在目录有写权限
- 无法删除正在被其他进程打开的文件
2. 重命名文件:rename()函数
函数原型
int rename(const char *oldpath, const char *newpath);
用法说明
- 用于重命名文件(在同一文件系统下,重命名和移动是等价的)
- 返回值:0表示成功,非0表示失败
- 需要包含头文件
stdio.h
示例代码
#include <stdio.h>
int main() {
char *oldName = "old_filename.txt";
char *newName1 = "new_filename1.txt";
char *newName2 = "new_filename2.txt";
char *newName3 = "new_filename3.txt";
// 第一次重命名
if (rename(oldName, newName1) != 0) {
perror("Error renaming file");
} else {
printf("文件重命名为 %s\n", newName1);
}
// 第二次重命名
if (rename(newName1, newName2) != 0) {
perror("Error renaming file");
} else {
printf("文件重命名为 %s\n", newName2);
}
// 第三次重命名
if (rename(newName2, newName3) != 0) {
perror("Error renaming file");
} else {
printf("文件重命名为 %s\n", newName3);
}
return 0;
}
使用注意事项
- 如果多次重命名使用相同的文件名,最终的文件名将取决于最后一次重命名操作
- 不能跨文件系统重命名(不同分区的文件系统)
- 重命名目录时,newpath不能是oldpath的子目录
完整文件管理示例
以下是一个包含创建、读取、删除和重命名文件的完整示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *filePointer;
char fileName[50];
char data[100];
int choice;
printf("Enter the file name: ");
scanf("%s", fileName);
// 创建文件并写入数据
filePointer = fopen(fileName, "w");
if (filePointer == NULL) {
printf("Unable to create file.\n");
exit(EXIT_FAILURE);
}
printf("Enter data to write to the file: ");
scanf("%s", data);
fprintf(filePointer, "%s", data);
fclose(filePointer);
printf("Data successfully written to the file.\n");
// 读取文件内容
filePointer = fopen(fileName, "r");
if (filePointer == NULL) {
printf("Unable to open file.\n");
exit(EXIT_FAILURE);
}
fscanf(filePointer, "%s", data);
printf("Reading data from the file:\nData: %s\n", data);
fclose(filePointer);
printf("Choose an option:\n1. Delete file\n2. Rename file\n");
scanf("%d", &choice);
switch (choice) {
case 1:
if (remove(fileName) == 0)
printf("File deleted successfully.\n");
else
printf("Unable to delete the file.\n");
break;
case 2:
printf("Enter new file name: ");
char newFileName[50];
scanf("%s", newFileName);
if (rename(fileName, newFileName) == 0)
printf("File renamed successfully.\n");
else
printf("Unable to rename the file.\n");
break;
default:
printf("Invalid choice.\n");
}
return 0;
}
跨平台注意事项
- Windows:路径使用反斜杠
\,在字符串中需要转义(如"C:\\Users\\file.txt")或使用正斜杠("C:/Users/file.txt") - Linux/macOS:路径使用正斜杠
/(如"/home/user/file.txt")
这些函数是C语言标准库的一部分,具有良好的跨平台性,但文件路径的表示方式因操作系统而异。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

