Pozor, keby si mal v premennej buf reťazec obsahujúci znak '%', tak to nedopadne dobre. Ak chceš vypisovať hocičo pomocou printf, tak formátovací reťazec by prakticky nikdy nemal byť vstupom od používateľa. Čiže by to malo vyzerať takto:
printf("%s", buf);
V tvojom prípade by bola vhodnejšia funkcia puts, ktorá na koniec vypisovaného reťazca pridá aj znak pre nový riadok.