C++ Letzten 6 Zeichen aus Datei löschen

ExXtReMe86

Cadet 4th Year
Registriert
Apr. 2010
Beiträge
106
Ich möchte eine Datei öffnen die letzten 6 Zeichen löschen und die Datei wieder schließen. Irgendwie sollte das mit seekp() funktionieren, aber ich bekomms irgendwie nicht hin.... entweder er löscht die ganze Datei oder er löscht gar nichts. Hat jemand ein Schnippsel für mich? :(
 
du musst in einer schleife deinen zeiger solange verschieben, bis du ans dateiende gekommen bist. danach einfach 6 zeichen zurück und die dann löschen.

edit: wenn dein zeiger "OEF" zurückgibt, ist er am letzten zeichen der datei angelangt.
 
Zuletzt bearbeitet:
Genau das versuch ich ja und eingentlich sollte
Code:
seekp (-6, ios_base::end);
das doch machen?
 
das weis ich nicht, wir machens ind er schule anders. kanns dir jetzt aber leider auchnicht so genau sagen... müsste ich mein programm in der schule nochmal angucken ;)

ich habs glaub min nem anderen zeiger gemacht, da wars iwas mit (zeiger, "%c", SEEK_END)
 
also ich würd den text in ein array einlesen und dann die letzen 6 auf null setzen
 
Die Datei kann sehr groß sein deshalb seh ich mal davon ab die gesamte datei einzulesen.
 
ja oder du liest jeden einzelnen buchstaben in ein zeiger ein und setzt die letzen auf NULL.
dann ist das alles dynamisch
 
Naja wie "löscht" mann denn etwas in einer DateI?

Anfügen ist kein Problem, zum Löschen ist eine Neuerstellung leider Pflicht.
 
S!x w3g dr3i schrieb:
das weis ich nicht, wir machens ind er schule anders. kanns dir jetzt aber leider auchnicht so genau sagen... müsste ich mein programm in der schule nochmal angucken ;)

ich habs glaub min nem anderen zeiger gemacht, da wars iwas mit (zeiger, "%c", SEEK_END)

Danke fseek war die Lösung. ;)

Ganz ohne die Datei komplett neu zu schreiben. :)
 
Wenn fseek die Lösung war, hättest ruhig auch sagen können, dass du Standard-C-Funktionen nutzst für die Dateioperationen...

@Thryon: Ist aber WinAPI, damit nicht Plattform-unabhängig bzw halt kein Standard-C(++).
 
immerwieder gern :)
 
Eigentlich nutze ich die boost library aber damit gings ja irgendwie nicht. SetEndOfFile() funzt nicht unter Unix oder täusche ich mich?
 
Ne, funktioniert natürlich nicht, weil es eine WinAPI-Funktion ist...

Und was heißt "nutze ich die Boost Library"? Wie sieht denn der Code zum Öffnen der Datei aus?
Zwischen "nutzen" und "nutzen" ist doch ein Unterschied...
 
Bis eben habe ich Boost benutz jetzt halt fopen was solls hauptsache es funzt. Boost nutz ich ja auch noch für andere Sachen. ;)
 
Naja, wenns BOOST ist sollte es evtl auch BOOST_IOS statt ios_base heißen, oder spielt das keine Rolle?
 

Ähnliche Themen

Zurück
Oben