Hallo Markus,
while ( (countedLines = getLine(line, MAXLENGTH)) > 0 && localmax < MAXLINES) {
genau umgedreht, macht es mehr Sinn. ;)
Meiner Ansicht nach müsste es doch genügen, die Adresse der Zeile (also "line") dem Zeigerarray zu übergeben, wodurch der aktuelle Zeiger aus dem Array weiß, wo der "String" zu finden ist. Aber das ist offensichtlich nicht so. Welche Erklärung gibt es dafür?
Ist eine Funktion abgearbeitet, werden alle Variablen, die in deren lokalen Bereich definiert wurden, gelöscht und der Speicher wird wieder freigegeben. Außerhalb von readLine() führt also ein Zugriff auf die (ehemalige) Adresse von "line" zu einem Speicherzugriffsfehler.
Aber selbst wenn Du Variable "line" global deklarierst, was machte das? Die Speicheradresse wäre dann zwar noch zur Laufzeit von writeLines() erreichbar. In Deinem Beispiel jedoch wäre nur die letzte eingegebene Zeile erreichbar, weil "line" in getLine() mit jedem erneuten Aufruf überschrieben wird. Es würde also 10 mal die Selbe Zeile ausgegeben werden.
Gruß aus Berlin!
eddi
(v0.0.3 - also ganz der alte ;)