07. december 2005 - 21:36
Der er
10 kommentarer og 2 løsninger
Find alle jpg filer!
Jeg skal lave et C program som kan finde alle .jpg filer i en mappe og alle undermapper... Hvordan gør jeg det i C ? ..gerne komplet kode!
Annonceindlæg fra DE-CIX
07. december 2005 - 21:52
#1
#include <stdio.h> #include <stdlib.h> #include <windows.h> void xdir(char *dir, char *ext); void xdir2(WIN32_FIND_DATA *fnddat, char *dir, char *ext) { char full[MAX_PATH]; if(fnddat->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(fnddat->cFileName[0]!='.') { sprintf(full,"%s%s\\",dir,fnddat->cFileName); xdir(full,ext); } } else { if(strcmp(fnddat->cFileName + strlen(fnddat->cFileName) - strlen(ext), ext)==0) { printf("%s%s\n",dir,fnddat->cFileName); } } } void xdir(char *dir,char *ext) { WIN32_FIND_DATA data; char spec[MAX_PATH]; sprintf(spec,"%s*.*",dir); HANDLE h = FindFirstFile(spec,&data); if(h!=INVALID_HANDLE_VALUE) { xdir2(&data,dir,ext); while(FindNextFile(h,&data)) { xdir2(&data,dir,ext); } } FindClose(h); } int main() { xdir("C:\\", ".jpg"); return 0; }
07. december 2005 - 21:52
#2
jeg har tilladt mig at antage windows
08. december 2005 - 09:12
#3
arne_v: Det skal være OS uafhængigt!
08. december 2005 - 09:16
#4
Det er til et commandline tool.
08. december 2005 - 14:35
#5
efter min bedste overbevisning kan det ikke laves OS uafhængigt jeg kan lave det samme til Unix/Linux med readdir og stat
08. december 2005 - 16:20
#6
Ok, jeg troede man kunne lave det OS uafhængigt. Så skal det laves til Unix/linux, kan du klare det arne_v ?
08. december 2005 - 17:02
#7
det vil jeg da tro
09. december 2005 - 13:07
#8
Følgende kode udskriver alle filer i et bib. og dets underbiblioteker, men.. hvordan får jeg fat i dem som er ".jpg" filer ? #include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <sys/stat.h> #define DIRSEP "/" #define TESTDIR "/home/test" void process(char *path) { DIR *dirp; struct dirent *entp; struct stat stbuf; char fnm[256]; dirp = opendir(path); while((entp = readdir(dirp)) != NULL) { if(entp->d_name[0]!='.') { sprintf(fnm,"%s%s%s",path,DIRSEP,entp->d_name); stat(fnm,&stbuf); if(!S_ISDIR(stbuf.st_mode)) { printf("%s\n",fnm); } else { process(fnm); } } } closedir(dirp); return; } int main() { process(TESTDIR); return 0; }
09. december 2005 - 14:01
#9
det ligner noget fra et gammelt spm. her :-) strcmp testet er stort set det samme som i win32 versionen
19. december 2005 - 09:30
#10
Hej arne_v. Du får andel i pointene da jeg anvendte dele af dit windows svar, så smid et svar!
19. december 2005 - 10:04
#11
ok
19. december 2005 - 16:45
#12
lukker
Kurser inden for grundlæggende programmering