Esto pasa porque no se usa la función scanf para lo que se debería, la funcion scanf solo se debe usar para números, ya que para otras cosas tiene comportamientos extraños, incluso para números algunas veces también.
La alternativa que se suele dar a scanf() es gets(), pero esta NO hay que usarla, porque puede producir un problema ya que no se mira el numero de caracteres que se esta introduciendo, la función que hay que usar es fgets().
Ejemplo: