編寫find
刺蝟@http://blog.csdn.net/littlehedgehog
去年做的一個小搜索是win32的,這次回頭看看windows SDK的代碼,不得不承認windows 在API的設計上封裝的很複雜,unix上邏輯上很清晰的代碼在windows上看得有些讓人摸不着頭腦。
- #include <stdio.h>
- #include <string.h>
- #include <dirent.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- int check_dir(char *filename)
- {
- struct stat file_info;
- if(stat(filename,&file_info)!=-1)
- {
- if(S_ISDIR(file_info.st_mode))
- return 1;
- }
- return 0;
- }
- void search_file(char *dir_name,char *target)
- {
- char filename[64];
- DIR *dir_ptr;
- struct dirent *dirent_ptr;
- if((dir_ptr=opendir(dir_name))!=NULL)
- {
- while((dirent_ptr=readdir(dir_ptr))!=NULL)
- {
- if(strcmp(dirent_ptr->d_name,".")&&strcmp(dirent_ptr->d_name,".."))
- {
- strcpy(filename,dir_name);
- strcat(filename,"/");
- strcat(filename,dirent_ptr->d_name);
- strcat(filename,"/0");
- if(strstr(filename,target))
- printf("%s/n",filename);
- if(check_dir(filename))
- search_file(filename,target);
- }
- }
- closedir(dir_ptr);
- }
- else
- {
- sprintf(stderr,"Cannot open the file %s:",dir_name);
- perror("");
- }
- }