enterbreak
Grünschnabel
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:
also soll die textdatei so aussehen (anhand des obigen beispiels):
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 das auch bestimmt hier passend für das tutorial-forum passen würde zu entlocken....
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:
nun soll es so aussehen, dass die zeilen zwischen bezug1 und bezug2 nach oben verschoben wird in die zeile direkt nach von: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
also soll die textdatei so aussehen (anhand des obigen beispiels):
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, dochvon: 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
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 das auch bestimmt hier passend für das tutorial-forum passen würde 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");