Mich wundert, dass du das programm überhaupt kompiliert bekommst. Du hast die Deklaration von buffer_adr nicht drin. Eigentlich müsste der Compiler an zig Stellen meckern.
Pack am besten mal meinen Code (aber komplett!) in ne separate Datei, wie ich es in den Kommentaren geschreiben habe.