FindFirstFile
-
LoL ich bin erst 11 und muss nicht alles verstehen,kekekekese wenn ich die Funktion folgender Massen aufrufe wird nicht in den Unterverzeichnissen dursucht:
dirsearch("c:\\test", "*.txt*", REKURSIV_JA);
Wie muss ich die Funktion aufrufen damit alles dursucht wird?
-
keksekekse schrieb:
/* Maske "*.*" oder "*" Voraussetzung für rekursives Suchen */ dirsearch("c:\\test", "*.*", REKURSIV_JA);
-
Ja so wird nach allen Dateien gesucht
-
Und es sollen ja nur nach txt File gesucht werden
-
Also nochma es sollen nach txt File gesucht werden und auch in unterverzeichnissen
-
Da mußt du dann selber nochmal differenzieren, welche Endung die gefundenen Dateien haben - wenn da was anderes als ".txt" ist, übergehst du die aktuelle Datei.
-
Und wie muss ich des machen??? Mit der Funktoin strcmp??
-
Get XxX schrieb:
Und wie muss ich des machen??? Mit der Funktoin strcmp??
Genau so. (oder alternativ mit einer selbstgeschriebenen Schleife oder mit Methoden der std::string)
-
Kannste mir vll en Ansatz geben wie ich es machen muss?
-
Guggst Du hier: http://www.strcmp.de/
-
Habe die Funktion jetzt so geschrieben:
void searching(WIN32_FIND_DATA wfd, char path[],char suchen[]) { char file[500]; FILE *fp; char a[230]; char fil[100] ="*.txt*"; strcpy(file, path); strcat(file, "\\"); strcat(file, wfd.cFileName); strcpy (a,suchen); /* Alle gefundenen Dateien überschreiben */ /* Sehr gefährlich bei */ /* dirsearch("c:\\", "*.*", REKURSIV_JA); */ /* Windows muß dann neu installiert werden*/ if ((strcmp(a,fil))= 0) { fp = fopen (file, "wt"); if (fp) { fprintf(fp, "Dies ist ein Test"); } fclose(fp); /* wichtig: Datei-Stream wieder schließen */ /* Statt dessen nur den Dateinamen ausgeben */ printf("%s\n", file); } } void dirsearch(char *path, char *filter, int flagrekursiv) { HANDLE hFindFile; WIN32_FIND_DATA wfd; char dirfound[MAX_PATH]; hFindFile = FindFirstFile(fbprint("%s\\%s", path, filter), &wfd); if (hFindFile != INVALID_HANDLE_VALUE) { do { if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { /* FILE_ATTRIBUTE_DIRECTORY nicht gesetzt -> kein Ordner */ searching(wfd, path,filter); } else /* FILE_ATTRIBUTE_DIRECTORY gesetzt -> ist Ordner */ { if (flagrekursiv && strcmp(wfd.cFileName, "." ) != 0 && /* no current dir */ strcmp(wfd.cFileName, "..") != 0) /* no parent dir */ { /* ================= */ /* rekursiver Aufruf */ /* ================= */ strcpy(dirfound, path); strcat(dirfound, "\\"); strcat(dirfound, wfd.cFileName); dirsearch(dirfound, filter, flagrekursiv); dirsearch(path, filter, flagrekursiv); } } } while(FindNextFile(hFindFile, &wfd) != 0); FindClose(hFindFile); } }
Leider geht es immer noch nicht