【发布时间】:2020-09-09 19:40:34
【问题描述】:
我正在尝试获取目录中存在的所有文件,然后为该文件添加 .enc 扩展名。示例 - 让 File.txt 存在,然后我将执行一些与加密相关的任务,之后新文件名将是 File.txt.enc
这是我的代码:
#include <dirent.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
DIR *d;
struct dirent *dir;
char *name;
int val;
d = opendir(".");
if (d)
{
while ((dir = readdir(d)) != NULL)
{
name=dir->d_name;
printf("File Found:%s\n",name);
strcat(name,".enc");
val=rename(dir->d_name,name);
if(val==0)
printf("Encrypted File:%s\n",name);
else
perror("Error: ");
}
closedir(d);
}
return(0);
}
但是我得到这样的输出......
File Found:write_pgm_img.c
Error: : No such file or directory
File Found:realloc.c
Error: : No such file or directory
File Found:getusage.txt
Error: : No such file or directory
File Found:directory.c
Error: : No such file or directory
您可以看到“没有这样的文件或目录”错误。但我不明白为什么?请解释一下。提前致谢。
【问题讨论】:
-
重命名前尝试打印
dir->d_name和name -
write_pgm_img.c.enc看起来像一个有效的文件名吗?你好调试器,我的老朋友……又来找你聊天了…… -
你在什么平台上?
opendir()不是标准 C 函数。 -
@12431234123412341234123 我正在使用 gcc 编译器。 Opendir() 是 GNU C 库中的标准函数......
-
@Rupam098 GCC 可以在没有
opendir()功能的windows 和许多没有目录概念的嵌入式平台上使用,甚至没有文件。如果您使用特定于 POSIX、Linux 或 GNU C 库的函数,请添加标签或在问题中指定。