Forum: PC-Programmierung Win32 API Include in C für directory listing gesucht ...


von C-Progger (Gast)


Lesenswert?

Ist ja alles ganz nett und schön mit der MFC und Objektorientierung usw.
Doch ich brauche nur die Headerdatei und die Funktionen für's 
FileHandling in C unter Windows32 !
Das Programm soll ganz einfach auf der Kommandozeile laufen, innerhalb 
des aktuellen Verzeichnisses alle Dateien durchgehen, davon ein MD5 
nehmen und wenn zwei Dateien im MD5 identisch sind eine davon löschen.
Ich suche jetzt über eine Stunde und finde ausschließlich MFC, C#, JAVA 
und sonstige Infos :-(
Bin ja kurz davor 'nen Installer für cygwin mit'm shellscript zu bauen 
...
Muß denn heutzutage jedes mini Tool 'nen Overhead von zwanzig MBs haben, 
nur weil's gerade in ist ?
Sorry Offtopic ...
Also nochmal, wer kann mir sagen welche Includes ich in den OpenWatcom 
Compiler für den Zugriff auf Verzeichnisse und Dateien darin in reinem C 
brauche (windows.h ja schonmal, oder) ?
Danke,
C-Progger

von Rolf Magnus (Gast)


Lesenswert?

> Also nochmal, wer kann mir sagen welche Includes ich in den OpenWatcom
> Compiler für den Zugriff auf Verzeichnisse und Dateien darin in reinem
> C brauche (windows.h ja schonmal, oder) ?

Ja, genau. Mehr solltest du nicht brauchen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Such doch einfach mal in den Headerdateien nach "FindFirstFile" und 
"FindNextFile", das sind Win32-API-Funktionen, mit denen sich auch 
Directorylistings erstellen lassen.

windows.h includiert üblicherweise alles benötigte.

von C-Progger (Gast)


Lesenswert?

Das mit dem FindFirst und FindNext war schon klar ;-)
Nur alle Infos im Web bezogen sich auf C#, JAVA und C++ mit MFC ;-)
Der Zugriff auf die Dateien funzt jetzt, nur stehe ich gerade ziemlich 
auf dem Schlauch :-(
Ich nehme folgenden MD5 Sourcecode:
http://xyssl.org/code/source/md5/
Da mache ich dann logischerweise sowas:
1
...
2
unsigned char cmd5_1[16];
3
unsigned char cmd5_2[16];
4
5
if(md5_file(FindFileData.cFileName,cmd5_1)||md5_file(FindFileData1.cFileName,cmd5_2))
6
{
7
  printf("\n Error md5 fileopening ! \n");
8
  return -1;
9
}
Jetzt sollten eigentlich in den beiden Variablen die MD5 Werte der Datei 
stehen.
Nur mit
1
if(cmd5_1==cmd5_2)
2
{
3
  printf("\n Deleting now %s \n",FindFileData1.cFileName);
4
  if(remove(FindFileData1.cFileName))
5
  {
6
    printf("\n Error in file deletion ! \n");
7
    return -1;
8
  }
9
}
werden identische Dateien nicht erkannt :-(
Kann mir mal bitte jemand meinen Denkfehler aufzeigen ?
Danke,
C-Progger

von A.K. (Gast)


Lesenswert?

> if(cmd5_1==cmd5_2)

Du brauchst keine API-Dokumentation, sondern ein C-Lehrbuch.

von A.K. (Gast)


Lesenswert?

Kleine Hilfestellung: Was du geschrieben hast, ist identisch mit
1
if(&cmd5_1[0]==&cmd5_2[0])
Such mal lieber in Richtung strcmp()/memcmp().

von C-Progger (Gast)


Lesenswert?

Ok,
nun mal NEU nach Absturz, Neustart und restlichem Scheiß :?
Also wenn jemand mal einen Blick auf die MD5 Routine geworfen hätte, 
wüßte er sie es das in das char Array Zahlen hineinkommen und KEINE 
Buchstaben !
Auf den Trichter mit strcmp bis hin zu mcmp usw. war ich auch schon 
gekommen ...
Nützt nur nix :-(
Ich peile einfach nicht das Format was die MD5 Routine in das char array 
packt !
Ist jetzt sowieso zu spät um klare Gedanken zu fassen ...
Trotzdem Danke,
C-Progger

GÄÄÄÄHHHHNNNNN

von A.K. (Gast)


Lesenswert?

Danke für die Blumen, aber es ist völlig wurscht ob in einem Array 
Zahlen, Buchstaben oder Hirnwindungen stecken. Es bringt nur einfach 
nichts, die Adresse von MD5-Summen zu vergleichen an Stelle der Summen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.