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