C Daten in Datei hinzufügen

Squicky

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.405
Hallo

Mit Hilfe von fopen, fscanf, fprintf und fseek kann man Dateien öffnen, lesen und schreiben. Mit Hilfe von fseek kann man auch an eine bestimmte Position der Datei springen und nur einen Teil lesen oder überschreiben. (http://de.wikibooks.org/wiki/C-Programmierung:_Dateien)

Ist es aber auch möglich, einen bestimmten Teil einer Datei durch einen Teil einer anderen Größe zu ersetzen?
Beispiel 1: Die Bytes an Position 100 bis 110 sollen entfernt werden und durch 50 andere Bytes ersetzt werden.

Beispiel 2: Die Bytes an Position 100 bis 110 sollen entfernt werden und durch zwei andere Bytes ersetzt werden

Wie kann man die Byte hinter dem bestimmten Teil nach hinten oder nach vorne verschieben?

Danke
 
Ich kenne keine Methode die irgendwas ohne Löschen einfügt. Das heißt aber nicht, dass es so eine nicht gibt ;)

Bleibt dann wohl nur die Möglichkeit, die Daten die hintendran stehen zu puffern und danach wieder einzufügen.

Ich denk die einfachste Möglichkeit wäre, wenn du eine neue Datei anlegst, und die entsprechenden Daten in diese schreibst. Danach dann die alte Datei löschen und durch die neue ersetzen.
 
nach dem lesen des anderen threads bin ich mittlerweile immer noch nicht schlauer. wieso machst du es dir so immens umständlich? wenn du torrent files ändern willst, dann sieh dir doch andere (funktionierende) implementierungen an, bastel diese als klasse nach, änder was du willst und speicher diese modifiziert ab. so umgehst du viele probleme, z.b. mit dem überschreiben und einfügen von daten. imo müsstest du eine länge von x einfügen (nicht überschreiben, was fwrite() ja nun leider mal macht) und diese daten dann überschreiben, was imo aber weit komplizierter ist. methode eins bedeutet zwar vllt. mehr aufwand, dafür kannst du dies aber z.b. öfter und umfangreicher einsetzen.

allerdings könntest du auch in eine temporäre datei schreiben. lies halt vom original bis x, füg dein zeugs ein, überspring die modifizierten sachen im original, lies wieder sachen aus dem original und schreib wieder im temp-file mit, dann wiederum die modifizierten sachen einfügen, ... imo zu undurchsichtig. nach ein paar mal siehst du da nicht mehr wirklich durch.
 
Filestream,StreamReader und StreamWriter Klasse könnte der Weg zu deiner Lösung sein. Der Stream ist nix anderes als ein Byte Array wo dich beliebig drin bewegen kannst. Werd mich heut abend mal hinsetzen und ausprobieren.

Gruss Magic
 
Zurück
Oben