Il motivo è che scanf lascia il buffer sporco. Nello specifico lascia il carattere '\n'. Uno spazio nella stringa di formattazione elimina tutti i blanks. Attento che con quello spazio non potrai inserire come carattere uno spazio, un a capo o un tab.