我正在为一个学校项目编写一个“病毒”,以从某个目录中删除一个文件。所以,我必须遍历给定的目录来找到指定的文件并删除它。但是,我可以浏览原始目录,但是当我尝试将子目录传递给它时,它说该位置不存在。我也尝试过手动放置位置。一样。这是一个文件夹,里面有一个文件夹。没有其他的
- 起始文件夹
- 子文件夹 1
- 子文件夹 1_1
- 文件删除.txt
- 子文件夹2
- 子文件夹 3
它开始列出 SubFolder1、SubFolder2 和 SubFolder3。我将原始位置与新文件夹连接起来并递归传递新位置。我没有得到这样的文件或目录。
StartingFolder 是与正在运行的程序位于同一目录的文件夹。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <dirent.h>
#include <sys/stat.h>
#include <assert.h>
int checkFolder(char * myPath)
{
DIR *d;
struct dirent *dir;
int success = 0;
printf("Path: %s\n", myPath);
if ((d = opendir(myPath)) != NULL)
{
while ((dir = readdir(d)) != NULL)
{
char * seperator = "\\";
char * pathFound = dir->d_name;
char * tempPath = "";
tempPath = malloc(sizeof(tempPath));
strcpy(tempPath, myPath);
strcat(tempPath, seperator);
strcat(tempPath, pathFound);
//printf("Files in Path: %s\n",tempPath);
if(strstr(tempPath, ".txt"))
{
success = 1;
}
else if(!strchr(tempPath, '.'))
{
checkFolder(tempPath);
}
}
closedir(d);
}
else
{
perror("opendir() error");
}
return success;
}
int main(void)
{
char * myPath;
int success;
myPath = malloc(sizeof(myPath));
myPath = "StartingFolder";
success = checkFolder(myPath);
printf("%d\n",success);
return(0);
}