我得到了一个包含多个子目录的目录的路径。每个子目录都有一个名为"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);
}
问题是 end->d_name
中的名称只是目录内"文件"的名称,它不是完整的路径,这意味着你调用
DIR *subDir = opendir(ent->d_name);
尝试在进程当前目录中查找目录。
您需要采用传递到第一个opendir
调用的路径,并附加新的路径部分。