scanf
возвращает целое число, указывающее, сколько «вещей» было успешно прочитано. Вы можете проверить это в условии, чтобы увидеть, если он получил то, что вы искали. Пример:
const int result = scanf ("%d",&righe);
if (1 != result) {
/* didn't get the 1 input we were looking for, do something about it! */
}
Вы хотите различать EOF и просто не целое число.