000
04.10.2004, 20:07 Uhr
enter-break
|
Hallo,
auch nach langer Suche im forum hab ich leider noch keinen annähernden lösungsansatz gefunden und ich schaff das alleine irgendwie nicht. hat jemand eine funktion, um ganze text-blöcke in einer txt-datei an eine bestimmte stelle nach oben zu verschieben?
mal ein beispiel, wie's in meiner txt-datei aussieht:
Code: |
von: text@blalbalba zeile 1 zeile 2 zeile 3 zeile 4 zeile 5 zeile 6 zeile 7 bezug1#################### ölaskdöjflkadsöflkasdfökasjdf ölaksdfölaskdöflkajsdölkfajsödlfj ölaksdfölaksdfölk bezug2#################### blablalba zeile irgendwas und so weiter
von: text@blalbalba222 zeile 1 zeile 2 zeile 3 zeile 4 bezug1#################### sssdddddddddddddd3eeeeeeeeeeeee opiu0o09898709870987 lkjölkjölkölkj 32132321323232321 bezug2#################### blablalba zeile irgendwas und so weiter
|
nun soll es so aussehen, dass die zeilen zwischen bezug1 und bezug2 nach oben verschoben wird in die zeile direkt nach von:
also soll die textdatei so aussehen (anhand des obigen beispiels):
Code: |
von: text@blalbalba ölaskdöjflkadsöflkasdfökasjdf ölaksdfölaskdöflkajsdölkfajsödlfj ölaksdfölaksdfölk zeile 1 zeile 2 zeile 3 zeile 4 zeile 5 zeile 6 zeile 7 bezug1#################### bezug2#################### blablalba zeile irgendwas und so weiter
von: text@blalbalba222 sssdddddddddddddd3eeeeeeeeeeeee opiu0o09898709870987 lkjölkjölkölkj 32132321323232321 zeile 1 zeile 2 zeile 3 zeile 4 bezug1#################### bezug2#################### blablalba zeile irgendwas und so weiter
|
alles was ich hab, sind 3 konstante (von: , bezug1, bezug2) mit denen ich arbeiten kann - die zeile würde ich ja über strncmp noch finden, doch wie mache ich dann weiter??? wenn ich zeilenweise einlese, bin ich ja bereits viel zu weit unten, um dann oben die zeile einzufügen zu können. Wie könnte die lösung aussehen?? gibt es hierfür vielleicht funktionen?
meine idee war zuerst, irgendwie die komplette datei in den speicher zu laden - allerdings könnte die u.Umständen auch gerne mal 20 MB groß sein was sicher zu Speicherproblemen führen könnte.
bitte bitte helft mir schnell - bin mir sicher, für euch profis ist das ein Leichtes.
achso - hätt ich fast vergessen, soweit wär ich schon - nun weiss ich aber nicht mehr weiter, denn ich habe mich noch nicht so ganz in c eingearbeitet und hoffe euch einen beispiel-code zu entlocken....
Code: |
#include <ctype.h> #include <stdlib.h> #include <conio.h>
#include <stdio.h> #include <string.h> int main () { char* eingabedatei = "eingabe.txt"; char* ausgabedatei = "eingabe2.txt"; char* schiebevon = "Bezug1######:"; // zwischen dieser zeile char* schiebebis = "Bezug2####"; // und dieser zeile char* nachzeile = "Von: "; // eine zeile NACH dieser zeile einfügen
FILE* rein; FILE* raus; char buffer[5000]; size_t len; char* p1; char* p2;
/* Dateien öffnen */ rein = fopen(eingabedatei, "r"); if (rein==NULL) { fprintf(stderr, "Kann %s nicht lesen.\n", eingabedatei); return 1; } raus = fopen(ausgabedatei, "w"); if (raus==NULL) { fclose(rein); fprintf(stderr, "Kann %s nicht schreiben.\n", ausgabedatei); return 2; }
/* Lesen + verschieben + im speicher um-schreiben */ while(fgets(buffer, sizeof(buffer), rein)) { p1 = buffer; // while ((p2=strstr(p1, schiebevon))!=NULL) if((p2=strstr(p1, schiebevon))!=NULL) // if ist wohl besser, oder? { // // H I L F E E E E //
} }
fclose(raus); fclose(rein); system("copy c:\\eingabe2.txt c:\\eingabe.txt"); system("del c:\\eingabe2.txt");
|
|