Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/07/2015, 02:30
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Saturación de buffer al cargar String

C no se caracteriza precisamente por ofrecer una interfaz potente para interactuar con la consola o con la entrada estándar.

Una opción que tienes es usar un buffer temporal lo suficientemente grande como para admitir prácticamente cualquier cadena. Vuelcas la entrada a dicho buffer y después ya trabajas sobre el mismo para saber su longitud y cualqueir otra cosa que necesites:

Código C:
Ver original
  1. char buffer[2000];
  2. scanf( "%s", buffer );
  3.  
  4. // opcion 1: copiar si la longitud es correcta y error en caso contrario
  5. if( strlen( buffer ) < 20 )
  6.   strcpy( cadena, buffer );
  7. else
  8.   MostrarError( "Longitud no valida" );
  9.  
  10. // opcion 2: reservar la memoria necesaria para copiar la cadena
  11. cadena = malloc( strlen( buffer ) );
  12. strcpy( cadena, buffer );

Y si no siempre te queda pasarte a C++, la clase string ya se encarga de todos estos problemas sin que tu tengas que pensar en ello.

Un saludo