Para realizar esa operación lees una linea de texto con fgets, a continuación tratas de obtener el numero de la linea mediante sscanf. Si esta retorna 1 significa que el usuario introdujo el numero correctamente, caso contrario solo debes verificar si la linea consiste de espacio blanco (linea vacía, se asigna el valor predeterminado que indicas) o no (la linea contiene caracteres inválidos para la conversión).
Un ejemplo para explicarlo mejor:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_LINEA 1024
int main(void)
{
char linea[MAX_LINEA];
int num;
int i;
if (fgets(linea
, MAX_LINEA
, stdin
) == NULL
){ return EXIT_FAILURE;
}else if (sscanf(linea
, "%d", &num
) == 1) printf("Entrada valida, el numero es %d\n", num
); else {
for (i
= 0; isspace(linea
[i
]); i
++) ;
if (linea[i] == '\0')
puts("Linea en blanco, se utiliza el valor predeterminado"); else
puts("Caracteres invalidos para la conversion!"); }
return EXIT_SUCCESS;
}
La validación de esa forma es básica y no es a prueba de errores, para eso hay que sustituir el uso de sscanf por strtol, strtoul o strtod pero como indicas que apenas empiezas con sscanf debe ser suficiente, ya veras el uso de las otras funciones mas adelante.
Y la próxima vez que tengas una duda sobre una operación en particular en C/C++ utiliza el foro correcto:
Programación C/C++Un saludo