#include <stdio.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <dirent.h> #include <stdlib.h> #include <string.h> #include <errno.h> int main() { char buffer[50]; getcwd(buffer,sizeof(buffer)); printf("current working directory is :%s /n",buffer); printf("input directory you want to look!: /n"); char usr_dir[50]; scanf("%s", usr_dir); DIR* dir; if (! (dir = opendir(usr_dir)) ) { printf("can't open dir %s /n", usr_dir); exit(-1); } struct dirent* d_ent; char fullpath[100]; int i; while ( (d_ent = readdir(dir))!= NULL ) { struct stat sb; if(strncmp(d_ent->d_name, ".", 1)==0) continue; memset(fullpath , '/0', sizeof(fullpath)); strcpy( fullpath, usr_dir); if (!strcmp(fullpath, "/")) { fullpath[0] = '/0'; } strcat( fullpath, "/"); strcat (fullpath, d_ent -> d_name); if((i = lstat(fullpath, &sb)) < 0) { printf("failed ! num: %d /n", i); fprintf(stderr,"error msg %s", strerror(errno)); exit(-1); } if(S_ISDIR(sb.st_mode)) printf("folder : %s /n", d_ent->d_name); else printf("file : %s /n", d_ent->d_name); } closedir(dir); return 0; }