c: tabelle(txt) mit variabler spaltenzahl einlesen

Post Reply
Message
Author
olli72

c: tabelle(txt) mit variabler spaltenzahl einlesen

#1 Post by olli72 »

hallo,
ich stehe vor einem problem und hoffe auf eure hilfe! ich möchte in c eine tabelle mit variabler spaltenanzahl einlesen. die erste spalte beinhaltet eine beschreibung die anderen spalten float werte (tab delimited). in den beschreibungen befinden sich auch leerzeichen. wie kann ich die beschreibungen und die dazugehörigen spalten einlesen um z.b die numerischen werte log2 zu transformieren. ich hatte bereits ein programm mit dynamischer speicherallozierung geschrieben (ich habe die numerischen werte in ein dyn. 2d array geschrieben) jedoch habe ich es nicht geschafft die beschreibungen in ein 2d char array zu schreiben. besteht die möglichkeit strukturen dynamisch zu generieren (wegen der variablen spaltenzahl)?
kurz zusammengefasst:
1.)wie kann ich die beschreibungen aus dem textfile in ein array einlesen (z.b array[0]=beschreibung1 array<font size="1">=beschr.2 usw)?
2.)gibt es einen dynamischen ansatz für das einlesen von n numerischen werten aus dem txt file.
ich danke euch im voraus für eure hilfe.
olli

rene

Re: c: tabelle(txt) mit variabler spaltenzahl einlesen

#2 Post by rene »

Verkettete Listen sind dein Freund.
Um es kurz zu machen sehen die so aus

struct spalte {
union {
char *str;
float value;
};
struct spalte *next;
};

und

struct zeile {
struct spalte *first_spalte;
struct zeile *next;
};

Du musst nicht unbedingt Listen nehmen,
Arrays auf die ein realloc() gemacht wird wen man feststellt die sind zu klein, oder noch komplexer, Baeume und Hashes.
Aber suche mal im Netz nach listen, da gibt es genug.
Bzw wenn du c++ nutzt nimm die STL.
Das Einlesen machst du am besten Zeile fuer Zeile und parst die dann durch nach dem trennzeichen (strtok zB) oder manuell, oder nimmst Flex/Yacc (is aber mit kanonen auf spatzen geschossen).

Der Post soll dir keine Lösung geben nur nen Hinweis (bin faul), ich habe meine structs auch nicht nachgeprüft ob die compilen.
Fuers Umwandeln von Strings in floats: atof.
Wenn du noch ne Func brauchst die Sicher Zeile fuer Zeile aus ner Datei liest, schreib was, dann kann ich Copy&paste machen.

(ps das board filtert die leerzeichen raus, also bedank dich nicht bei mir)

Post Reply