Datei als BYTE Array einlesen
-
Hallo,
ich hab eine kleine Funktion im Internet gefunden mit der man eine Datei von einem Computer entschlüsseln kann. Man muss der Funktion einen Byte Array (unsigned char) uebergeben und die Größe von dem String-Array. Leider verzweifle ich an dem Einlesen der Datei in das Array. Hier der Code:
#include <Windows.h> #include <MMSystem.h> #include <Stdio.h> #include <StdLib.h> void MemScramble(BYTE *bypBuffer, int iSize) { int cnt; BYTE temp; // XOR deface for (cnt=0; cnt<iSize; cnt++) bypBuffer[cnt] ^= 237; // BYTE swap for (cnt=0; cnt+2<iSize; cnt+=3) { temp = bypBuffer[cnt]; bypBuffer[cnt] = bypBuffer[cnt+2]; bypBuffer[cnt+2] = temp; } } int main( void ) { FILE* fp; int i; unsigned char inhalt[500000]; fp = fopen("Easy.c4f","rb"); for(i = 0; i < 1001; i++) fscanf ( fp , "%c", &inhalt[i]); fclose(fp); MemScramble(inhalt,sizeof(inhalt)); fp=fopen("Easy.bz","w+"); fprintf ( fp, inhalt); fclose(fp); }
Versteht mich jemand und kann mir jemand helfen?
-
einlesen sieht zwar absolut schlecht aus, sollte aber fuer dateien <= 1000 zeichen funktionieren.
deine verschluesselungsfunktion will ich mir nicht angucken, weil die nicht zu deinem problem gehoert (jedenfalls hast du das nicht gesagt).
wie du die daten zurueckschreibst ist falsch. aendere das. schliesslich hast du binaerdaten und keine strings. fprintf ist die total falsche wahl. wie kommst du nur auf fprintf??? ausserdem musst du noch binaer schreiben ("w+" ist nicht genug)
-
Kleiner Tip: zum Lesen und Schreiben solltest du besser fread/fwrite verwenden.
-
mit scanf() kann man binärdaten nicht einlesen, weil scanf() leerzeichen als trennzeichen betrachtet und überliest.
-
hm, gut zu wissen... das hab ich nu davon, nicht alles anzustreichen, was mir nicht gefaellt...