我有以下函數,抽象的統計結構的處理用C壞的結果而獲得文件的詳細信息Ç
int isdir(const char *filename) {
struct stat st_buf;
stat(filename, &st_buf);
if(S_ISDIR(st_buf.st_mode))
return 0;
return 1;
}
和主函數調用isdir
int main(...) {
struct dirent *file;
DIR *dir = opendir(argv[1]);
while(file = readdir(dir)) {
printf("%d\n", isdir(file->d_name));
}
closedir(dir);
/* other code */
}
我有一個名爲Test文件夾作爲程序的參數,在兩個文件中,一個是名爲「archivo」的常規文件和一個名爲「carpeta」的文件夾。我的程序從文件和文件夾中打印1和1,當它應該是0和1時,我看不到錯誤在哪裏。
終端中運行的stat函數爲文件和文件夾提供輸出。
Fichero: «archivo»
Tamaño: 0 Bloques: 0 Bloque E/S: 4096 fichero regular
Dispositivo: 805h/2053d Nodo-i: 3159580 Enlaces: 1
Acceso: (0664/-rw-rw-r--) Uid: (1000/alejandro) Gid: (1000/alejandro)
Acceso: 2013-10-31 21:08:57.556446728 -0300
Modificación: 2013-10-31 21:08:57.556446728 -0300
Cambio: 2013-10-31 21:08:57.556446728 -0300
Creación: -
Fichero: «carpeta/»
Tamaño: 4096 Bloques: 8 Bloque E/S: 4096 directorio
Dispositivo: 805h/2053d Nodo-i: 3147783 Enlaces: 2
Acceso: (0775/drwxrwxr-x) Uid: (1000/alejandro) Gid: (1000/alejandro)
Acceso: 2013-10-31 21:19:11.728526599 -0300
Modificación: 2013-10-31 21:19:20.867833586 -0300
Cambio: 2013-10-31 21:19:20.867833586 -0300
Creación: -
你檢查stat的返回值嗎? –