【发布时间】:2014-04-19 03:06:26
【问题描述】:
从编译中获取的代码很好。它在一个目录中打印文件名,前面有一个字母选项:d、f、l 或 o,具体取决于它们的文件类型(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");
}
}
【问题讨论】: