[c] String Funktionen

Das ist tatsächlich ein Grund auf das explizite Casten beim Nutzen der malloc() Funktion zu verzichten. Were ich also in Zukunft drauf achten.

Was meinst du mit situ? Und ja genau das soll geschehen, der Ersatztext soll deutlich größer sein, als der Suchtext. Damit du dir von der späteren Aufgabe ein besseres Bild machen kannst... Eine Datei soll komplett in einen String ausgelesen und danach stückweise verarbeitet werden. Zudem soll eine zweite Datei in einen String ausgelesen werden. In diesem String sollen jetzt bestimmte Platzhalter durch die Informationen, die aus der ersten Datei gewonnen wurden ersetzt werden. Ist die Generierung des neuen Strings abgeschlossen, soll dieser in eine neue Datei geschrieben werden.

Das Programm benötigt folglich Funktionen zum finden bestimmter Wortkonstruktionen, um Informationen aus dem eingelesenen Text Filtern zu können (daher werden Regexp benötigt). Des Weiteren sollen Strings durch andere Strings ersetzt werden (wie bereits erwähnt ist im Regelfall der Ersatztext länger als der Suchtext).

Die Links werde ich mir sofort mal ansehen.

MfG, Andy
 
Was meinst du mit situ?
Ich sprach von in situ, also in-place.
Und ja genau das soll geschehen, der Ersatztext soll deutlich größer sein, als der Suchtext. Damit du dir von der späteren Aufgabe ein besseres Bild machen kannst... Eine Datei soll komplett in einen String ausgelesen und danach stückweise verarbeitet werden. Zudem soll eine zweite Datei in einen String ausgelesen werden. In diesem String sollen jetzt bestimmte Platzhalter durch die Informationen, die aus der ersten Datei gewonnen wurden ersetzt werden. Ist die Generierung des neuen Strings abgeschlossen, soll dieser in eine neue Datei geschrieben werden.

Das Programm benötigt folglich Funktionen zum finden bestimmter Wortkonstruktionen, um Informationen aus dem eingelesenen Text Filtern zu können (daher werden Regexp benötigt). Des Weiteren sollen Strings durch andere Strings ersetzt werden (wie bereits erwähnt ist im Regelfall der Ersatztext länger als der Suchtext).
Wie bereits angesprochen ist dann das Problem, das der Speicher der für den String reserviert ist nicht ausreicht. Du könntest z.B. den String Typ der GLib Bibliothek und dessen Funktionen verwenden, der wird automatisch erweitert wenn nötig. Du könntest natürlich auch nach einer anderen Bibliothek suchen, bevor du ein neues Rad erfindest....

\edit: Ansonsten ist es eine relativ schlechte Idee den Dateiinhalt komplett einzulesen. Wenn möglich solltest du den Text sequentiell verarbeiten. Ansonsten mußt du bei einer Ersetzung bei der der Ersetzungstext nicht genauso lang ist wie der Suchtext den restlichen Text hinter der Übereinstimmung komplett im String nach vorn bzw. hinten schieben.

Gruß
 
Zuletzt bearbeitet:
Meine genaue Aufgabe besteht darin ein C Programm zu schreiben, dass es mir ermöglicht eine *.java Datei so zu parsen, sodass aus den JavaDoc Kommentaren eine Dokumentationsdatei in XML erstellt wird. Der allgemeine Rahmen für solch einen Parser ist mir klar (Richtlinien zur Dokumentation mit JavaDoc), jedoch ist mir nicht klar, wie ich die einzelnen Kommentare etc. parsen soll. Ich kann ja nichteinmal Strukturen festlegen, die später die Informationen aus einem Kommentar enthalten, da es zum beisüiel immer unterschiedlich viele Funktionsparameter gibt. Wie gehe ich an soetwas richtig ran? Wäre nett, wenn du mir einige Tipps geben könntest. Ist leider eine ungeschickte Lernaufgabe (ist meine Meinung).

MfG, Andy
 
Hi.
Meine genaue Aufgabe besteht darin ein C Programm zu schreiben, dass es mir ermöglicht eine *.java Datei so zu parsen, sodass aus den JavaDoc Kommentaren eine Dokumentationsdatei in XML erstellt wird. Der allgemeine Rahmen für solch einen Parser ist mir klar (Richtlinien zur Dokumentation mit JavaDoc)
Du meinst das das Eingabeformat für dich klar ist?! Für den Parser würde man allerdings eher einen Parsergenerator verwenden, z.B. bison und flex.
jedoch ist mir nicht klar, wie ich die einzelnen Kommentare etc. parsen soll. Ich kann ja nichteinmal Strukturen festlegen, die später die Informationen aus einem Kommentar enthalten, da es zum beisüiel immer unterschiedlich viele Funktionsparameter gibt.
Da würde sich eine Liste anbieten. Damit du das nicht auch alles noch neu erfinden mußt, würde sich auch die GLib Bibliothek anbieten. (siehe http://library.gnome.org/devel/glib/stable/glib-Doubly-Linked-Lists.html)
Wäre nett, wenn du mir einige Tipps geben könntest. Ist leider eine ungeschickte Lernaufgabe (ist meine Meinung).
In welchem (Zeit-)Rahmen soll das denn eine Übungsaufgabe sein? Und für welches Fach bzw. was ist denn da eigentlich das zu erreichende Lernziel?

Gruß
 
Das ganze ist eine Übungsaufgabe im Rahmen eines C-Praktikums. Der Zeitrahmen beträgt knapp 3 Wochen. Ich denke das Lernziel soll die Vertiefung der C-Kenntnisse in einem Praxis nahen Projekt sein.

Werde mir die genannten Bibliotheken mal ansehen. Danke.

MfG, Andy
 
Zurück