Ka ob das hier reingehört weil es nichts mit OS Dev zu tun hat sondern eher mit C++ & fstream. Aber man kanns ja mal versuchen.
Also, ich habe eine Datei in der zum Beispiel folgendes steht (nur ein Beispiel):
Testtext
#abc Test.
Hallo
Jetzt möchte ich die Datei Byte für Byte lesen und in einen Outputfile schreiben. Wenn das aktuelle Zeichen aber ein # ist möchte ich die nächsten 4 Bytes auch lesen und checken ob da "abc " steht. Wenn nicht soll das #-Zeichen und die gelesenen 4 Bytes unverändert in die Output Datei geschrieben werden und normal weitergemacht werden. Wenn aber in der Datei "#abc " steht und das erkannt wurde möchte ich alle Zeichen bis zum Punkt in einen neuen String schreiben und den ganzen Teil nicht in die Outputdatei schreiben. Ich hab einen Pointer auf die Inputdatei und einen Pointer auf den Outputfile.
Ich weiß die Erklärung ist nicht gerade top, also wenn jemand Fragen dazu hat werd ich die beantworten (eigentlich logisch ^^).
Der Code bisher:
char ch;
char tmp[4];
char *str;
while(!FileIn->eof())
{
// Zeichen lesen
ch = FileIn->get();
// Wenn Zeichen kein # ist, einfach speichern
if(ch != '#')
{
FileOut->put(ch);
} else {
// Zeichen ist ein #
// Nächsten 4 Zeichen lesen
FileIn->read(&tmp[0], 4);
tmp[4] = '\0';
// Wurde abc erkannt
if(strcmp(tmp, "abc ") == 0)
{
// String dahinter ermitteln
while(ch != '.')
{
ch = FileIn->get();
*str++ = ch;
}
*str= '\0';
// Zum Debuggen String anzeigen
cout << file << endl;
} else {
// Nein, also alles bisher gelesene speichern...
FileOut->put('#');
FileOut->write(tmp, 4);
// ...und weitermachen
continue;
}
}
}