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:
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
Un ejemplo para explicarlo mejor:
Código (c) [Seleccionar]
#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){
puts("Error critico!");
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