Textdatei in Array einlesen und gefilterte Auslesedatei schreiben



  • Hallo!

    Bin ein C Neuling.

    Wie kann ich aus einem Textfile (test.txt-ist 10MB groß - unvollständiges Einlesen in EXCEL 😞 ) alle Zeilen einlesen in einen Array?

    Dieser Array gehört dann durchsucht auf Schlüsselwörter.
    Diese Schlüsselwörter sind dann Ausgangspunkt für ein Auslesedatei (.CSV)

    Wenn ein Schlüsselwort an erster oder manchmal auch an zweiter Stelle im Riesentextfile vorkommt, dann sollen die Zeile des Schlüsselworts und auch die 4 Folgezeilen in das Ausgabefile geschrieben werden.

    Wie kann ich das machen?

    Wäre nett, wenn mir da wer helfen könnte.

    Danke.
    johannes



  • die datei erstmal komplett einlesen:
    als erstes die groesse rausbekommen -also filepointer ans ende der datei setzen (seek() ) dann position rausbekommen (tell() ) und irgendwo abspeichern.
    dann noch mit read() in ein dynamisches feld (malloc() ) einlesen.
    nun hast du erstmal deine datei in dem feld welches nach deinen strings mit nem pointer (oder evtl. verschiedenen stringfunktionen -siehe dazu string.h) durchsuchst
    und in ein anderes dynamische feld kopierst (mit den 4 folgenden zeilen wie du sagtest -wuerde mir dafuer eine getline() methode schreiben oder sowas in der art).
    und zu guter letzt noch dein 2 feld in dem sich die schluesselwoerter und der kram befinden mit write in eine andere datei abspeichern.



  • blödsinn, datei natürlich zeile für zeile einlesen, dann immer die zeile checken und je nach dem ausgeben und nächste lesen (bzw. ausgeben).

    guckste beispielsweise fopen, fgets und fputs , zum suchen strstr



  • wenn du mir dafuer jetzt noch ne anstaendige begruendung nennen koenntest...
    warum sollte man es denn zeilenweise einlesen wenn eh die ganze datei durchsucht wird -wo es doch noch dazu um einiges langsamer ist (fopen() sah ich bereits fuer selbstverstaendlich an wenn man schon mit datein hantiert...fclose() nicht vergessen 😉 )

    ps.: es hies ja auch:

    keboo schrieb:

    Wie kann ich [...] alle Zeilen einlesen in einen Array?



  • Wieso willst du die Zeilen in einem Array speichern? Machst du dann noch was damit?
    Ich würde die Zeile einlesen, testen ob ein Schlüsselwort enthalten ist, wenn ja sie in der anderen Datei speichern und evtl. auch die nächste.
    Dann musst du nicht die ganzen 10MB in den Arbeitsspeicher laden, sondern nur einige kB.



  • Guten Morgen!

    Ich will die Zeilen in einen Array schreiben, da in der Auslesedatei einzelne Ausdrücke der Zeilen neu geordnet werden sollen.

    Ich versuche es ein wenig detaillierter zu beschreiben meinen Problemansatz:

    1. Einlesen der Ausgangsdatei aus einem über 10 MB großen File
    2. Durchsuchen der Datei auf 4 verschiedene Schlüsselwörter.
      Das sind jeweils verschiedene Wörter die am Anfang der Zeile stehen.
      Dann müssen je Schlüsselwort, nicht nur die Zeile selbst, sondern auch, je nachdem, zwischen 2 und 4 zusätzliche Zeilen eingelesen werden in ein Zwischenarray. Array meiner Meinung nach deshalb, weil ich für die Auslesedatei nur einzelne Wörter bzw. Zahlen brauche, die in meinem Zwischenarray gemischt vorkommen.
      Sprich: Die Schlüsselwörter kommen immer wieder in meinem Ausgangsfile vor. In meinem Ausgangsfile, stellt jedes Zwischenarray eine Zeile dar. Die Informationen die ausgelesen werden sollen kommen immer an selben Stellen vor im Zwischenarray, sind aber gemischt.

    Das ist mein Plan.

    Kann mir Bitte wer Hinweise geben, wie ich das Ganze realisieren kann?
    Hab leider so gut wie keine Ahnung von C. Wie gesagt, Excel VBA ist glaub ich nicht mehr so ganz geeignet für das Problem.

    Danke.

    Johannes


Anmelden zum Antworten