P
Virokams schrieb:
... nunja unter C musst du dann wohl schon mit einem 2 Dimensionalem Array arbeiten.
char *name[8][64] (8 Sortierbare Namen)(jeweils 64 Zeichenlang).
vielleicht gehts auch anders ist nur so eine Idee.
Naheliegend, aber unschön, weil Du damit jede Menge Speicherverschnitt produzieren würdest.
So, Doty, Schema F sieht ungefähr so aus:
- char *liste vorsehen
- char array als Buffer anlegen. Die Länge mit Bedacht wählen, schreibst Du über das Array hinaus, gibt's günstigstenfalls einen "segmentation fault".
- Einen Namen darin einlesen, mit strlen() Länge ermitteln
- und per malloc()soviel Speicher einem char zuweisen, per strcpy() Buffer nach alloziertem Speicher kopieren.
- char **liste per malloc/realloc anlegen/erweitern, als letztes Element den zuletzt erhaltenen char* reinkopieren.
- Für jeden Namen zurück auf "Namen einlesen"
So kriegst Du letztlich ein Array of strings ohne Speichervergeudung. Beim Sortieren mußt Du dann auch keine Inhalte umkopieren, sondern lediglich die Pointer darauf tauschen.
Der Abriß in dürren Worten, ganz ordentlich beschrieben ist das in http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=46&nocache=1 PDF- Seite 145ff. und schau zu Strings 153ff. an!