Moin,
das 'Problem' ist hier weder temp noch printf, das Problem ist die
Schleife und deren Abbruchbedingung. Die Schleife läuft schlicht durch,
weil die Abbruchbedingung, so wie Du sie haben möchtest, aufgrund der
zwangsläufigen Rundungsfehler bei Fließkommazahlen nicht (immer) exakt
erfasst wird.
Daher nimmt man dafür am besten auch entweder gar keinen float oder
double, oder wenn doch, dann prüft man auf einen kleinen von Null
verschiedenen Wert, wenn Null das Ziel des Abbruchs sein soll.
Und die einzelnen Ziffern werden, wie schon erwähnt wurde, als eine
Zeile ausgegeben, weil Newline \n in printf fehlt.
C ist eine sehr schöne Programmiersprache, mit der man sich auf jede nur
erdenkliche Art ins Knie schießen kann.
Mit besten Grüßen
Murmelchen