這是從編譯好的代碼。它將文件名打印在目錄中,並在其前面有一個字母選項:根據文件類型(o
),可選擇d
,f
,l
或o
。但是,我在目錄/etc/network
上測試了它,它有一個名爲run
的符號文件,它顯示爲d
?我已經嘗試重新安排if-statements
的順序,但是這也給我們帶來不滿意的結果。我使用不正確?C:<sys/stat.h>函數S_ISLNK,S_ISDIR和S_ISREG行爲奇怪嗎?
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");
}
}