c-可以打开目录(路径名)来更改输入路径名的值



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

int dtw(char *path) {
    struct stat statbuf;
    ...
    else if (S_ISDIR(statbuf.st_mode)) {
            printf("Path is: %sn", path);
            struct dirent *dirent;
            DIR *dirp;
            if ((dirp = opendir(path)) == NULL) {
                puts("Can't open directory.");
                return -1;
            }
            printf("Path is: %sn", path);
    }
    ...
}

结果:

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

唯一会影响path的是这里的opendir()。它有我没有看到的副作用吗?还是有其他事情在起作用?

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

DIR *opendir(const char *dirname);

constopendir()并没有改变它

我想知道您的path是否是一个指向已释放内存的指针?在这种情况下,内存可能已经分配给opendir(),而您看到的变化是因为您使用了一个指向不应该查看的内存的悬挂指针?

相关内容

  • 没有找到相关文章

最新更新