Lord Kefir
König
So, vielleicht 'ne doofe Frage aber ich hab' da ein kleines Problem...
Hocke an einem Programm, was einen eingegebenen Text u.a. in seine einzelnen Sätze gliedern soll. Das ganze möchte ich mit einem dynamischen zweidimensionalen Array lösen: char **satzfeld.
Ich alloziere zu Beginn den Speicherplatz für 10 Sätze (hab' für spätere Änderungen 'ne Konstante definert: SATZ_BLOCK) und das sieht dann so aus: satzfeld=(char **)malloc(SATZ_BLOCK*4).
Sollte die Größe überschritten werden, wird das Array mit realloc erweitert.
Der Speicherplatz für die Sätze wird - je nach Speicherplatzbedarf - an einer späteren Stelle reserviert: satzfeld=(char *)malloc(der entsprechende Wert)
Ausgeben kann ich die Sätze hinther also so:
for (i=0; i<satz_anzahl; ++i)
printf("%s\n", satzfeld);
Das Problem ist, dass die Sätze nicht immer korrekt gespeichert werden und es 100%ig mit irgendwelchen Speicherüberschreibungen zu tun hat. Ich bin mir nicht ganz sicher, ob es richtig ist, 4*10 Bytes für das Array zu allozieren - aber eigentlich müsste das doch richtig sein, oder? Ist schließlich die Größe eines Zeigers...
Mfg, Lord Kefir
ps: Hab' mal einen Auszug des Codes angehangen...
Hocke an einem Programm, was einen eingegebenen Text u.a. in seine einzelnen Sätze gliedern soll. Das ganze möchte ich mit einem dynamischen zweidimensionalen Array lösen: char **satzfeld.
Ich alloziere zu Beginn den Speicherplatz für 10 Sätze (hab' für spätere Änderungen 'ne Konstante definert: SATZ_BLOCK) und das sieht dann so aus: satzfeld=(char **)malloc(SATZ_BLOCK*4).
Sollte die Größe überschritten werden, wird das Array mit realloc erweitert.
Der Speicherplatz für die Sätze wird - je nach Speicherplatzbedarf - an einer späteren Stelle reserviert: satzfeld=(char *)malloc(der entsprechende Wert)
Ausgeben kann ich die Sätze hinther also so:
for (i=0; i<satz_anzahl; ++i)
printf("%s\n", satzfeld);
Das Problem ist, dass die Sätze nicht immer korrekt gespeichert werden und es 100%ig mit irgendwelchen Speicherüberschreibungen zu tun hat. Ich bin mir nicht ganz sicher, ob es richtig ist, 4*10 Bytes für das Array zu allozieren - aber eigentlich müsste das doch richtig sein, oder? Ist schließlich die Größe eines Zeigers...
Mfg, Lord Kefir
ps: Hab' mal einen Auszug des Codes angehangen...