Salve ragazzi..premetto che ho provato a cercare un pò in giro per la rete ed ho trovato dei risultati,ma molto confusi 
Il mio problema è il seguente:
Prendere in input il numero;se "quello" immesso dall'utente è un numero allora prosegui a fare quello che devi fare altrimenti stampa un messaggio d'errore e rieffettua l'inserimentodel numero.
Io ho provato a fare in questo modo (in c):
codice:
int main()
{
//Codice trovato in rete
int n = 0,i = 0;
do
{
printf ("Inserisci un numero valido ");
i = scanf("%d",&n);
if (i==0)
printf("\nInput non valido!!\n");
}
while(i==0);
}
Ovviamente il suddetto codice non funziona perchè se inserisco anche solo un singolo carattere il programma mi entra in loop.
Ok ragazzi però non ho perso le speranze 
Ho provato a fare un altro ragionamento:
ho supposto che la scanf ritorni uno 0 se fallisce,mentre se non fallisce un valore diverso da 0. (chiedo conferma se quanto ho supposto è giusto)
Quindi ho fatto una cosa di questo tipo:
codice:
int main()
{
int n = 0;
do
{
printf ("Inserisci un numero valido ");
if (! scanf("%d",&n))
printf("\nInput non valido!!\n");
}
while(! scanf("%d",&n));
}
Ma a malincuore entra in loop anche in questo caso.
Guardando la reference della scanf non riesco a capire proprio cosa ritorna la scanf.
Conclusione:
Ci provo a studiare e a documentarmi in modo autonomo ma a volte proprio non mi riesce
perciò chiedo a voi.
Non è che riuscireste a darmi una mano?
P.s.Mi interesserebbe anche sapere una soluzione in C++ 
Grazie in anticipo