> Ich habe zuerst stdio stdlib und string.h eingebunden. Damit wurde
> das Programm (.hex) 13500 Byte gross ?!
Von den Header-Dateien wird es weder groß noch klein: die enthalten
nur die Deklarationen. Entscheidend ist, was Du alles linkst. stdio
ist allerdings schon ein mächtiger Klopper, völlig klar, für einen
ATmega16 kann das je nach Aufgabe aber durchaus benutzbar sein.
> ... also hab ich die wichtigsten Funktionen (atoi, strcmp, und
> sscanf) selber programmiert und die Header rausgeworfen.
Es wäre besser gewesen, stattdessen die Ursache zu analysieren. ;-)
Meine Vermutung ist, daß Du nach wie vor die floating point Variante
von printf() drin hast, aber ohne Deine Linker-Kommandozeile ist das
schwer zu sagen. Du kannst Dir die Ausgabe-Symboltabelle mal ansehen,
dort siehst Du, welche Funktion auf welche Adresse gelinkt ist. Mit
Tools wie avr-sizex bekommst Du wohl sogar gesagt, welche Funktion wie
groß ist (disclaimer: habe ich selbst noch nie benutzt).
Im Übrigen bezweifle ich, daß Dein rewrite von strcmp() kleiner
geworden ist als die Bibliotheksfunktion. ;-) Auch bei scanf() bin
ich dran interessiert zu sehen, ob Du das kleiner bekommen hast als
ich...