读取子目录中的文件

时间:2014-12-21 14:59:37

标签: c file directory fopen opendir

我给了一个带有多个子目录的目录路径。每个子目录都有一个名为" 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 个答案:

答案 0 :(得分:1)

问题是end->d_name中的名称只是"文件的名称"在目录中,它不是完整的路径,这意味着您对

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

尝试在进程当前目录中找到该目录。

您需要将传入的路径转到第一个opendir调用并附加新路径部分。