【发布时间】:2019-06-19 09:15:43
【问题描述】:
我是 C 的新手。 我编写了这个程序,允许我批量重命名同一目录中的文件(主要是显示)。它目前正在使用来自 stdio 的 Rename 函数,同时使用 dirent 结构来查找“旧名称”。但是,这意味着必须将“新名称”和“旧名称”添加到“路径字符串”中,以便 Rename 可以找到文件。我希望有一种方法可以直接使用 dirent 更改文件名。
我尝试将 dp->d_name 更改为“新名称”,但这并没有更改文件名。
这不是我完整的工作程序,而是我一直用来测试其他重命名方法的代码。
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main(){
DIR *dirp;
struct dirent *dp;
char dir[500];
char pathOne[500] = "Testing.txt";
int i;
printf("\nPlease enter the target directory :\n");
scanf("%[^\n]s",dir);
dirp = opendir(dir);
printf(dirp ? "Directory Connection Successful\n\n" : "Directory Connection Failed\n\n");
printf("%s\n", pathOne);
while(dp = readdir(dirp)){
if((dp->d_name[0])!='.'){
for(i = 0; dp->d_name[i] = pathOne[i]; i++);
printf("%s\n", dp->d_name);
}
}
return 0;
}
Please enter the target directory :
H:\Documents\TestFolder
Directory Connection Successful
Testing.txt
Testing.txt
Testing.txt
Testing.txt
Press any key to continue . . .
这是我在控制台中得到的,但资源管理器中的文件名没有更改。
【问题讨论】:
-
使用opendir(3) 和readdir(3)。请注意,C11 不知道目录。
标签: c file stream rename dirent.h