1

我正在尝试在 Ubuntu 中打开相对路径,但是在打开第一个文件夹(称为14)后,代码无法打开里面的文件夹(称为15

int pathsCtr; // number of folders in RelativeArray

char ** RelativeArray; // the folders in the relative path, currently: 

RelativeArray[0] = "14";

RelativeArray[1] = "15";
// some code before 

if (pathsCtr > 0 && flag == TRUE) // then we have a relative path
{
    int j = 0;
    while (j < pathsCtr)  // run until the last path and open every one
    {
        printf("\n%s\n" , RelativeArray[j]);
        dirp = opendir(RelativeArray[j]);  // open all directories until the last one
        if (dirp == NULL)
                return -1;
        j++; // proceed to the next directory
    }

    flag = FALSE; // turn off the flag , we'll never go near this again
}

j == 0这条线:dirp = opendir(RelativeArray[j]);有效而dirp无效时NULL

但是当j == 1那条线dirp = opendir(RelativeArray[j]);失败并且dirpNULL.

我究竟做错了什么?

编辑:

假设我在RelativeArray上面的代码之前做 malloc 。

4

1 回答 1

6

opendir() 打开一个目录以读取其内容,但它不会更改进程的工作目录。

要访问子目录,您必须通过其相对于当前工作目录的完整路径(或它的绝对路径)来指定它。

您可以通过使用适当的分隔符连接您的字符串来做到这一点。

由于您似乎没有对 opendir() 返回的目录流指针做任何事情,只是检查它是否为非空,因此这很可能不是您想要使用的函数。您可能想查看 chdir() 代替(man 2 chdir),但请考虑任何不良后果。

于 2012-06-17T22:54:06.263 回答