可以在opendir(pathname)中更改输入路径名的值吗?

时间:2012-03-16 02:16:06

标签: c directory-structure opendir

使用opendir()时,我收到了一些奇怪的结果:

int dtw(char *path) {

    struct stat statbuf;

    ...

    else if (S_ISDIR(statbuf.st_mode)) {
            printf("Path is: %s\n", path);

            struct dirent *dirent;
            DIR *dirp;

            if ((dirp = opendir(path)) == NULL) {
                puts("Can't open directory.");
                return -1;
            }

            printf("Path is: %s\n", path);
    }

    ...
}

结果:

Path is: /home/.../etc
Path is:

这里唯一会影响path的是opendir()。它有副作用,我没有看到?或者还有其他工作吗?

1 个答案:

答案 0 :(得分:3)

不允许更改; opendir()的定义是:

DIR *opendir(const char *dirname);

constopendir()没有改变它。

我想知道你的path是否是指向释放内存的指针?在这种情况下,内存可能已经分配给opendir()并且您正在看到更改,因为您正在使用悬挂指针指向您不应该看的内存?