Ich verstehe nicht so ganz, warum du das so kompliziert machst. Die Ergebnisse werden doch letztlich nach name und value geschrieben, wobei die Funktion einfach davon ausgeht, dass dort schon jeweils genug Platz vorhanden sein wird. Wozu also dieses komplizierte Zwischenspeichern mit Längenermittlung fürs malloc etc? Warum schreibst du die Zeichen nicht gleich direkt nach name und value?

Pseudocode:
Code:
skip bis '<'
while (zeichen aus file nicht '=')
    schreibe zeichen nach name
terminiere name
while (zeichen aus file nicht '>')
    schreibe zeichen nach value
terminiere value