Zum Inhalt springen

suchen


a1nett

Empfohlene Beiträge

hallo

kann mir hier vielleicht jemand helfen?

mein problem:

soll alle dateien auf einer festplatte raussuchen die "projektID.xml" heißen.

leider hab ich gar keinen plan wie man das macht. hab schon einen teil quelltext. mir fehlt nur der algorithmus der die einzelnen orderner durchsucht.

wie kann man das in c++ realisieren?

kann immer nur die ordner im root durchsuchen aba keine unterordner. benutzt man dafür die funktionen _findfirst und _findnext?

wer was weiß bitte unbedingt melden

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tja, die gibt's ein Problem.

Die Windows-File-Funktionen bieten keine Routinen

zur rekursiven Dateisuche.

Vorschlag (mit _findfirst() und _findnext()):

Du musst im Stammverzeichnis anfangen und (*)überprüfst dort,

ob die datei vorhanden ist. Ist dies der Fall, merkst du dir

den Pfad, und durchsucht dann das Verzeichnis nach

Verzeichnissen. In jedem Verzeichnis startest du dann wieder

bei (*).

Tip: Such im MSDN nach SCANDIR.C !!!

Viel Spaß, werd mal schauen, ob ich dass nicht besser

hinkriege als Mikroschrott im Beispiel! :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na dann, hier mal ein Versuch:


#include "stdio.h"

#include "io.h"

#include "string.h"

#include "afxcoll.h"


void AddResult(const char* lpszPath, const char* lpszFilename)

{

    printf("%s%s\n", lpszPath, lpszFilename);

}


void SearchDirectory(const char* lpszDirectory, const char* lpszFilename)

{

	_finddata_t finddata;

	long Handle;

	// dateien suchen

	char* lpszWildcard = new char[strlen(lpszDirectory) + strlen(lpszFilename) + 1];

	strcpy(lpszWildcard, lpszDirectory);

	strcpy(lpszWildcard + strlen(lpszDirectory), lpszFilename);

	Handle = _findfirst(lpszWildcard, &finddata);

	if (Handle != -1)

		do

		{

			AddResult(lpszDirectory, finddata.name);

		} while (_findnext(Handle, &finddata) == 0);

	_findclose(Handle);

	delete lpszWildcard;

	// unterverzeichnisse suchen

	lpszWildcard = new char[strlen(lpszDirectory) + strlen("*.*") + 1];

	strcpy(lpszWildcard, lpszDirectory);

	strcpy(lpszWildcard + strlen(lpszDirectory), "*.*");

	Handle = _findfirst(lpszWildcard, &finddata);

	if (Handle != -1)

		do

		{

			if ((finddata.attrib & _A_SUBDIR) && (finddata.name[0] != '.'))

			{

				char* lpszSubDir = new char[strlen(lpszDirectory) + strlen(finddata.name) + strlen("\\") + 1];

				strcpy(lpszSubDir, lpszDirectory);

				strcpy(lpszSubDir + strlen(lpszDirectory), finddata.name);

				strcpy(lpszSubDir + strlen(lpszDirectory) + strlen(finddata.name), "\\");

				SearchDirectory(lpszSubDir, lpszFilename);

				delete lpszSubDir;

			}

		} while (_findnext(Handle, &finddata) == 0);

	_findclose(Handle);

	delete lpszWildcard;

}


int main(int argc, char* argv[])

{

	SearchDirectory("C:\\Programme\\Microsoft Visual Studio\\", "*.cpp");

	return 0;

}

Ich bin davon ausgegangen, dass du das ohne MFC machst,

also hab ich dass mal "in richtigem C" geschrieben.

Ich hoffe, dein Stack ist groß genug für ein paar rekursive

Aufrufe. :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...