gpt4 book ai didi

C: 函数 S_ISLNK、S_ISDIR 和 S_ISREG 表现异常?

转载 作者:行者123 更新时间:2023-12-01 19:35:07 26 4
gpt4 key购买 nike

从中获取的代码可以正常编译。它打印目录中的文件名,前面有一个字母选项:dflo 取决于他们的文件类型(o 为其他)。但是,我在目录 /etc/network 上测试了它,该目录有一个名为 run 的符号文件,它显示为 d?我也尝试过重新安排 if-statements 的顺序,但这也给出了不令人满意的输出。我使用不当吗?

while ((ent = readdir (dp)) != NULL) {
lstat(ent->d_name, &st);
if (col){
if(S_ISDIR(st.st_mode)){
printf("d\t");
}
else if (S_ISREG(st.st_mode)){
printf("f\t");
}
else if (S_ISLNK(st.st_mode)){
printf("l\t");
}
else {
printf("o\t");
}
}

最佳答案

这一行:lstat(ent->d_name, &st);dp->d_name只包含文件名,需要传全文件路径到 lstat(),如下所示:

    char full_path[512] = "DIR_PATH"; //make sure there is enough space to hold the path.
strcat(full_path, ent->d_name);
int col = lstat(full_path, &st);

顺便说一句,S_ISDIRS_ISLNK 等是 POSIX 宏,不是函数。

关于C: <sys/stat.h> 函数 S_ISLNK、S_ISDIR 和 S_ISREG 表现异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394584/

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