jak wczytujesz %d, to wskaźnik zatrzymuje się na znaku po liczbie. Można to wykorzystać do sprawdzenia następnego znaku. przykład:
int a;
char c;
int suma=0;
do{
scanf("%d%c", &a, &c);
suma+=a;
}while(c==32);
tyle że jeśli na końcu zamiast entera będzie spacja, to będzie dalej czekał na liczbę.
Gdzieś miałem bardzo ładną funkcję do zamiany char* na int/long, a nawet i float/double, która szuka pierwszej napotkanej liczby i ustawia podany (opcjonalny) wskaźnik na znak po tej liczbie pozwalając na łatwe pobranie wszystkich liczb z char*a. Zwykły while, w którym się sprawdzało wartość tego wskaźnika wystarczył.