La funzione scanf restituisce un valore di tipo int, che rappresenta il numero di dati effettivamente letti; se questo risulta inferiore al numero di argomenti usati nella chiamata (esclusa la control-string), vuol dire che si é verificato un errore.
Inoltre legge un dato finche non incontra un terminatore, cioè blank, tab o CR.

Ciò vuol dire che puoi controllare se ci sono ancora dati da leggere verificando che il valore di ritorno sia 1.
codice:
int letto=1;
while (letto) {
  letto=scanf("%d",&numero);
  printf("%d",numero);
}