fgets fügt am ende kein stringterminal ein, deshalb rennt dein strcmp wohl über die grenze des zeile-array und kackt ab!
stringterminal ist '/0' (null) oder auch einfach nur die zahl 0

dein aaray sollte dann aber auch 82 bytes groß sein wenn du 81 bytes einliesst!

die größe deines "sollkopf" würd ich rausnehmen

sollkopf[] = "balbla"

der compiler ergänzt die stringgröße beim übersetzn von intitialisierten arrays selbst

könnt auch dein printf sein das stirbt, wegen fehlendem stringterminal

meld dich wenn du es gefunden hast, finde zwar, dass das forum hier nicht unbedingt SO das richtige dafür ist, aber iss hier allemal besser als im c-plusplus forum ^^ da wird man nur hochnäsig angeschnauzt ^^

EDIT: dein

zeile_p = fgets ( ...

iss aber auch falsch!!!

fgets liefert dir die anzahl gelesener bytes oder EOF (-1 glaube, End Of File) zurück und keinen pointer!!