shutdown
Erfahrenes Mitglied
Hallo!
Ich hätt da mal wieder gern a Problem
Und zwar versuche ich zur Zeit, in C++ den Hexa-Dezimal-Dump einer Datei zu erzeugen.
Das funktioniert auf der Konsolenansicht auch wunderbar (Beispiel folgt).
Nur wenn es nun darum geht, die selbe Ausgabe auch in eine Datei zu bekommen, dann weiß ich nicht mehr so recht, wie ich das machen soll.
Hier mal der gesamte Code:
Eine Datei mit Inhalt "123abc" erzeugt damit folgende Hexa-Anzeige:
0 ist die Zahl des ersten Elements einer Zeile (vergleichbar mit Speicheradressierung)
Und hier kommt nun der Abschnitt des Codes, der mir Probleme macht:
Mache ich aus Speicher eine char-Variable, dann kopiert er mir die Datei 1 zu 1
Ist Speicher aber eine int-Variable, dann krieg ich die Fehlermeldung:
Weiß hier jemand Rat?
Vielen Dank schon mal im Voraus!
shutdown
Ich hätt da mal wieder gern a Problem
Und zwar versuche ich zur Zeit, in C++ den Hexa-Dezimal-Dump einer Datei zu erzeugen.
Das funktioniert auf der Konsolenansicht auch wunderbar (Beispiel folgt).
Nur wenn es nun darum geht, die selbe Ausgabe auch in eine Datei zu bekommen, dann weiß ich nicht mehr so recht, wie ich das machen soll.
Hier mal der gesamte Code:
Code:
#include <iostream.h>
#include <fstream.h>
void main(void)
{
ifstream dump;
ofstream dump_out;
char dump_pfad[100];
char ausgabe_pfad[100];
cout << "Hex-Dump einer Datei\n";
cout << "--------------------\n\n";
cout << "Pfad der Datei angeben: ";
cin >> dump_pfad;
cout << "Pfad der Ausgabe-Datei angeben: ";
cin >> ausgabe_pfad;
dump.open(dump_pfad, ios::nocreate);
if(!dump)
cout << "\nDatei nicht gefunden oder fehlende Zugriffsrechte";
else
{
char nxt_ch; //nächster Charakter
int nr_ch=0; //Zahl des Charakter
cout << hex; //Hexa-Ausgabe
int speicher;
dump_out.open(ausgabe_pfad);
while(dump.get(nxt_ch))
{
if(nr_ch % 16 == 0)
{
cout << "\n";
cout.width(6);
cout << hex << nr_ch << " ";
}
cout.width(3);
cout << int(nxt_ch);
speicher = int(nxt_ch);
dump_out.put(speicher);
nr_ch++;
}
}
dump.close();
dump_out.close();
}
Eine Datei mit Inhalt "123abc" erzeugt damit folgende Hexa-Anzeige:
Code:
0 31 32 33 61 62 63
0 ist die Zahl des ersten Elements einer Zeile (vergleichbar mit Speicheradressierung)
Und hier kommt nun der Abschnitt des Codes, der mir Probleme macht:
Code:
speicher = int(nxt_ch);
dump_out.put(speicher);
Mache ich aus Speicher eine char-Variable, dann kopiert er mir die Datei 1 zu 1
Ist Speicher aber eine int-Variable, dann krieg ich die Fehlermeldung:
Code:
"Ambiguity between 'ostream::put(char)' and 'ostream::put(signed char)' "
Vielen Dank schon mal im Voraus!
shutdown