gpt4 book ai didi

c - 如何在给定目录中查找特定文件并检查它是文件还是另一个目录

转载 作者:行者123 更新时间:2023-11-30 17:28:46 24 4
gpt4 key购买 nike

我试图更改此代码以在给定目录中查找特定文件,并使用 opendir() 声明它是文件还是目录;

我已经搜索如何执行此操作有一段时间了,但我似乎无法找到或理解执行此操作的简单方法。

#include <sys/types.h> 
#include <dirent.h>
#include <stdio.h>

int main(int argc, char *argv[]){
DIR *dp;
struct dirent *dirp;

if(argc==1)
dp = opendir("./");
else
dp = opendir(argv[1]);

while ( (dirp = readdir(dp)) != NULL)
printf("%s\n", dirp->d_name);

closedir(dp);
return 0;
}

最佳答案

使用stat作为文件名(它是连接的目录名和readdir返回的名称)。 while 循环如下所示:

char *path = "./";
if (argc == 2) {
path = argv[1];
}
dp = opendir(path);

while ((dirp = readdir(dp)) != NULL) {
char buf[PATH_MAX + 1];
struct stat info;
strcpy(buf, path);
strcat(buf, dirp->d_name);
stat(buf, &info); /* check for error here */
if (S_ISDIR(info.st_mode)) {
printf("directory %s\n", dirp->d_name);
} else if (S_ISREG(info.st_mode)) {
printf("regular file %s\n", dirp->d_name);
} else {
/* see stat(2) for other possibilities */
printf("something else %s\n", dirp->d_name);
}
}

您需要包含一些额外的 header (sys/stat.hunistd.h 用于 statstring。 h 表示本例中的 strcpystrcat)。

关于c - 如何在给定目录中查找特定文件并检查它是文件还是另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25955767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com