gpt4 book ai didi

linux - Dir 指针,通过 stat 访问目录和文件信息

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:45 24 4
gpt4 key购买 nike

我是一名新手 C 程序员。我试图打开一个目录并读取这些文件名,并使用 stat 给我这些文件的信息。在这里我只是想看看它们是目录还是文件。稍后我会得到修改时间和文件大小等。截至目前我只获得一个级别,所以 .和 .. 文件。为什么?

./check Dirc
whats in Dirc
two dir and two files
Program/ ProgramX/ test test2



Dir *ptrDir;
struct dirent *stDir;
struct stat buff;
if( ptrDir = opendir( argv[1] ) !=NULL){
printf("%s\n",argv[1]);
while( (stDir = readdir( ptrDir )) != NULL){
if(stDir->d_name[0] !='.'){//i dont want the hidden files
if( (stDir->d_name, &buff) == -1){ perror("stat broke");}
printf("stDir name: %s\n", stDir->d_name);
switch(buff.st_mode &s_IFMT){
case S_IFDIR: printf("Directory\n"); break;
case S_IFREG: printf("File\n"); break;
default: print("default\n");
}
}
}
}




OutPut:
Data:
stDir name: Program
stat broke: No such file or directory


Expected OutPut:
OutPut:
Data:
stDir name: Program
Directory
stDir name: ProgramX
Directory
stDir name: test
File
stDir name: test2
File

最佳答案

所以我应该更好地阅读手册页。实际上,我没有做的是检查找到的文件是否不是“.”。在前面,如果不是,则获取该文件并构建放置在 stat 中的路径。

while ( (stDir = readdir(pDir)) != NULL) {
char * ePath = malloc(strlen(Data));
strcpy(ePath,Data);
strcat(ePath,stDir->d_name);
if (oneFlag[1] == 'a'){
printf(" %10s\n", stDir->d_name);
} else if (oneFlag[1] == 'l') {
if (stDir->d_name[0] != '.') {
//printf("ePath value %s \n",ePath);
if( stat( ePath, &buff) == -1){ perror("perror-stat broke"); exit(-1); }....

关于linux - Dir 指针,通过 stat 访问目录和文件信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47210851/

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