gpt4 book ai didi

C、stat() 2 出现问题,无法打开文件

转载 作者:行者123 更新时间:2023-11-30 16:24:19 25 4
gpt4 key购买 nike

所以我尝试使用函数 stat 获取文件的所有权限。

我的主要问题是,当我作为文件夹路径发送时,stat 返回 -1,但发送“.”给我所有的权利,除了找到文件夹时。

我添加了两张图片,因为这样可能会更容易理解我的问题。 sending two different av.

char    *g_permissions(struct stat file_stat, char *permissions)
{
if (!(permissions = malloc(sizeof(char) * 11)))
return (0);
permissions[0] = *((S_ISDIR(file_stat.st_mode)) ? "d" : "-");
permissions[1] = *((file_stat.st_mode & S_IRUSR) ? "r" : "-");
permissions[2] = *((file_stat.st_mode & S_IWUSR) ? "w" : "-");
permissions[3] = *((file_stat.st_mode & S_IXUSR) ? "x" : "-");
permissions[4] = *((file_stat.st_mode & S_IRGRP) ? "r" : "-");
permissions[5] = *((file_stat.st_mode & S_IWGRP) ? "w" : "-");
permissions[6] = *((file_stat.st_mode & S_IXGRP) ? "x" : "-");
permissions[7] = *((file_stat.st_mode & S_IROTH) ? "r" : "-");
permissions[8] = *((file_stat.st_mode & S_IWOTH) ? "w" : "-");
permissions[9] = *((file_stat.st_mode & S_IXOTH) ? "x" : "-");
permissions[10] = '\0';
return (permissions);
}

void dir_content(char *path)
{
char *permissions;
DIR *dir;
struct dirent *sd;
struct stat fstat;

dir = opendir(path);
if (dir == NULL)
return ;
while ((sd = readdir(dir)) != NULL)
{
stat(sd->d_name, &fstat);
printf("%i\n",stat(sd->d_name, &fstat));
if (sd->d_name[0] != '.')
{
printf("%s ", g_permissions(fstat, permissions));
printf("%s\n", sd->d_name);
}
}
closedir(dir);
}

int main(int ac, char **av)
{
char *test;

dir_content(av[1]);
return (0);
}

感谢您的帮助,并对我的英语不好表示歉意!

最佳答案

你需要更改你的工作目录,这就是答案https://stackoverflow.com/a/5126055/6416635

int main(int ac, char **av)
{
chdir(av[1]);
dir_content(av[1]);
return (0);
}

关于C、stat() 2 出现问题,无法打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53696039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com