Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/08/2016, 17:47
enrieto
 
Fecha de Ingreso: abril-2016
Mensajes: 31
Antigüedad: 8 años, 8 meses
Puntos: 5
Respuesta: Cambio de comportamiento con scanf?

Hola; una mirada al estándar [URL="http://port70.net/~nsz/c/c11/n1570.html#7.21.6.4"]C11[/URL] (clic para ver) nos dice que

Cita:
3 The scanf function returns the value of the macro EOF if an input failure occurs before the first conversion (if any) has completed. Otherwise, the scanf function returns the number of input items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure.
Un ejemplo para estos casos puede ser:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int n;
  7.  
  8.     int res = scanf("%d", &n);
  9.  
  10.     if(res == 0)
  11.         printf("matching failure\n");
  12.  
  13.     if(ferror(stdin))
  14.         perror("error");
  15.  
  16.     if(feof(stdin))
  17.         printf("end-of-file reached.\n"); // Ctrl+Z en Windows
  18.  
  19.     printf("\n%d", n);
  20.  
  21.     return 0;
  22. }