Hello,
mault er
csv2.c:35: warning: return from incompatible pointer type
csv2.c:35: warning: function returns address of local variable
Da würde ich auch maulen.
Du erzeugst innerhalb der Funktion eine Struktur auf dem Stack.
Zu gibst den Zeiger auf diese Struktur als Ergebnis zurück. Für den Zeiger wurde auch mit dem Funktionsstart ein Platz auf dem Stack freigehalten, aber nicht für eine Struktur unbekannter Größe.
Der Lebensbereich der Struktur endet mit der Funktion. Der Zeiger zeigt daher hinterher auf einen Speicherbereich, der ihm nicht mehr gehört.
Baue die Struktur auf dem Heap auf. Dann lebt sie auch nach dem Ende der Funktion weiter. Allerdings musst Du dann später auch selber dafür sorgen, dass der Speicher wieder freigegeben wird.
Du musst Dir also den Zeiger auf jedes dynamisch erzeugte Element merken.
Oder baue Dir vorher eine Leerstruktur auf, die Du benutzen darfst. Dann musst Du aber auf die Größe achten, so wie Martin das vorhin gezeigt hat.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg