2014-12-21 68 views
0

我给出了具有多个子目录的目录路径。每个子目录都有一个名为“st”的文件。我试图从每个子目录读取每个st文件,但我总是在调用fopen时收到一个NULL指针?阅读子目录中的文件

我的代码:

int main(){ 

DIR *dir; 
struct dirent *ent; 
FILE *st; 

dir=opendir("/home/me/Desktop/dir/"); 

while((ent=readdir(dir)) != NULL){ 

    if(ent->d_type == DT_DIR && strcmp(ent->d_name, ".") != 0 && strcmp(ent->d_name, "..") != 0){ 

     DIR *subDir = opendir(ent->d_name); 

     st = fopen("st", "r"); 

     if(st == NULL){ 
      perror("doesn't exist"); 

     } 

    } 

} 
closedir(dir); 

}  

回答

1

的问题是,在end->d_name名称是“文件”目录内的只是名字,它不是完整的路径,这意味着你要

DIR *subDir = opendir(ent->d_name); 
通话

试图找到当前目录中的目录。

您需要将您传递给第一个opendir调用的路径添加到新路径部分。

+0

然后,我甚至需要创建另一个direcotroy指针(DIR * subDir),或者我可以只更改第一个(DIR * dir)? – Matthew

+0

都不是。只需连接名称。 – abligh

+1

根本问题 - 长期无法进行任何调试。 –