dynamisches char array
-
hi,
ich habe eine textdatei mit einer anzahl an zeichen, die allerdings variabel gross ist. wie schaffe ich es diesen dynamischen text in ein array zu schreiben das immer genau die richtige groesse hat.
immer auf vorrat speicher zu reservieren ist ein fach doof
-
Du könntest Zeichenweise oder Blockweise auslesen, wobei du die Blockgröße ja selbst bestimmen kannst. Oder die Dateigröße bestimmen, einen entsprechenden Puffer anlegen und dann auslesen. Zum Bestimmen der Dateigröße kannst du hier gucken:
http://www.wer-weiss-was.de/theme158/article1154071.htmlEdit: In dem Link scheint das für Linux zu sein, hatte ich übersehen.
In ANSI C einfach den Zeiger ans Ende der Datei setzen und dann mit fgetpos auslesen, wie in etwa hier:
http://www.galileo-press.de/openbook/c_von_a_bis_z/c_018_014.htm#RxxobKap01801404002A241F01D18C
-
Vellas ich glaube der hat was anderes gemeint.
gahhhhst: versuchs mal mit realloc(void*, int);
erster parameter ist dein array, zweiter die neue größe auf die dein array anwachsen soll. der alte inhalt bleibt dabei bestehen.
-
Vellas ich glaube der hat was anderes gemeint.
nicht so unhoeflich
versuchs mal mit realloc(void*, int);
ich glaube, dass das nun wirklich die langsamste und uneleganteste methode ist...
while(getc(file) != EOF) size++; text = malloc(size);
finde ich am schoensten
-
dadrus schrieb:
Vellas ich glaube der hat was anderes gemeint.
gahhhhst: versuchs mal mit realloc(void*, int);
erster parameter ist dein array, zweiter die neue größe auf die dein array anwachsen soll. der alte inhalt bleibt dabei bestehen.Mit realloc kann man ein Array größer machen (wie du schon sagtest). Was ich aber lediglich vorgeschlagen habe, war erst die Größe die für das Array benötigt wird herauszufinden um dann einen entsprechend großen Puffer bereitzustellen. Oder immer Häppchenweise lesen, dafür würde man dann evtl. wie du es hast realloc verwenden.
Das was ich gemeint habe ist das wozu Moh ein Code-Snippet geliefert hat.