Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/05/2015, 00:41
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: Problema con la hora (lenguaje C)

Cita:
Iniciado por Santos96 Ver Mensaje
si hago:
Si haces eso, haces mal. Si te fijas, "fecha" es un array de tamaño 10... pero en 10 caracteres puedes meter "04/05/2015"... es decir, todavía te faltan por meter 7 caracteres: ":11:15" y el caracter nulo de fin de cadena. Lo que va a pasar al hacer esa asignación es que vas a sobreescribir las variables adyacentes, con lo que el programa tendrá comportamientos extraños.

Cita:
Iniciado por Santos96 Ver Mensaje
Como hago para guardar el día, mes, año, hora y minutos en las variables tipo int declaradas?
Una forma es "trocear" la cadena con la función strtok. En este caso los delimitadores serán '/' para recuperar el día y el mes y ':' para recuperar el resto de valores. Luego aplicas atoi sobre cada fragmento y almacenas cada número donde corresponda.

Código C:
Ver original
  1. char* fecha = "04/05/2015:11:15";
  2. int dia, mes, anio;
  3. char* ptr;
  4.  
  5. ptr = strtok( fecha, '/' ); // Solo es necesario pasar "fecha" la primera vez
  6. dia = atoi( ptr );
  7.  
  8. ptr = strtok( NULL, '/' ); // Fíjate que ahora en vez de "fecha", se pasa NULL
  9. mes = atoi( ptr );
  10.  
  11. ptr = strtok( NULL, ':' );
  12. anio = atoi( ptr );
  13.  
  14. // ...

Un saludo