von FILE* nach char[]
-
Hallo Leute,
ich habe mir aus dem Netz einen Algorithmus heruntergeladen, der mit einer FILE* als Dateneingabe und mit einer FILE* als Datenausgabe arbeitet. Nun möchte ich diesen Algorithmus in einem bestehenden Projekt verwenden, das die Eingabe und Ausgabe über interne Strings macht. Kann ich irgendwie von FILE* nach char[] konvertieren, ohne dass temporär eine Datei angelegt werden muss? Gibt es vielleicht so etwas wie eine "virtuelle Datei", die also im Arbeitsspeicher existiert?
Das sauberste wäre natürlich, den Algorithmus umzuschreiben, dass er seine Ein- und Ausgabe direkt mit char[] macht, aber das sieht mir mich nicht einfach aus, da Manipulationen auf der Bitebene stattfinden und viele FILE*-spezifische Funktionen verwendet werden.
Für Hilfe dankbar.
Grüße,
Rudi
-
In ANSI-C gibt es sowas nicht.
Falls du den gcc verwendest, solltest du dir fmemopen() anschauen.
-
fmemopen und open_memstream sehen sehr nützlich aus!
Hier in der Firma habe ich allerdings nur Visual Studio zur Verfügung. Könnte also z.B. auch C++-Funktionen verwenden. Muss ja nur die Dateiendung in "cpp" umbenennen.
-
soviel ich weis kannst du stdin und stdout als streams verwenden und genauso wie dateien handlen, falls es nur um bildschirmaus/eingabe geht.
sonst fürde ich eine funktion schreiben, die die ausgabe/eingabe irgendwie kapselt und dann entweder in die datei oder in einen string ausgibt.
vielleicht gehts auch mit funktions-pointern (entweder auf sprintf oder fprintf zeigen lassen, habe damit aber keine wirklichen erfahrungen)