Binäre Datei und Problem mit 0x00
-
Moin,
ich habe ein Problem, zu dem ich einfach keine Lösung finde...
Wenn ich folgenden Code anwende, wird jedesmal bei der Ausgabe der String an der Stelle unterbrochen, an der ein 0x00 erscheint:
char cTest[11]; cTest[0] = 0x62; cTest[1] = 0x00; cTest[2] = 0x30; cTest[3] = 0x00; cTest[4] = 0x30; cTest[5] = 0x05; cTest[6] = 0x00; cTest[7] = 0x00; cTest[8] = 0x00; cTest[9] = 0x00; cTest[10] = 0xff; CString strMBox; strMBox.Format("%c%c%c%c%c%c%c%c%c%c%c" , cTest[0] , cTest[1] , cTest[2] , cTest[3] , cTest[4] , cTest[5] , cTest[6] , cTest[7] , cTest[8] , cTest[9] , cTest[10]); m_exe_path = strMBox; UpdateData(FALSE);
Das Problem ist, dass ich eine Zeichenfolge in einer Binären Datei suchen und ersetzen möchte. Die Funktion ist schon da, nur gibt es halt Probleme mit dem 0x00...
Die eigene Funktion wird so aufgerufen:
FileTextReplace("+showscores", "-showscores", m_demopath2); // bzw. so: FileTextReplace(cTest, " ", m_demopath2);
Jetzt möchte ich aber die linke rote Zeichenfolge suchen und durch die rechte ersetzen:
Kann mir wer helfen?
MfG, Manuel.
-
Lass mich raten: Die Parameter von FileTextReplace sind Zeiger auf nullterminierte Strings?
Wie ermittelst du in der Funktion die Länge der Strings?Wenn deine Strings nicht nullterminiert sind (weil das Nullzeichen eben keine Endmarkierung ist), dann musst die die Information über die Länge der Strings auf andere Weise an FileTextReplace übermitteln.
Und du kannst auch keine Windowsfunktion benutzen, die nullterminierte Strings erwartet. Dazu gehören so ziemlich alle String-Ein- und Ausgabefunktionen, auch die der MFC.
Ich würde dir raten, die Daten als Hexdump ein- und auszugeben.
-
Zeiger auf char, ja.
Wie kann ich das denn umgehen?