Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con la hora (lenguaje C)

Estas en el tema de Problema con la hora (lenguaje C) en el foro de C/C++ en Foros del Web. si hago: int dia, mes, año, hora, minuto; char fecha [10] = "04/05/2015:11:15"; Como hago para guardar el día, mes, año, hora y minutos en ...
  #1 (permalink)  
Antiguo 07/05/2015, 17:05
 
Fecha de Ingreso: mayo-2015
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Pregunta Problema con la hora (lenguaje C)

si hago:

int dia, mes, año, hora, minuto;
char fecha [10] = "04/05/2015:11:15";

Como hago para guardar el día, mes, año, hora y minutos en las variables tipo int declaradas?
La función atoi no me valdría porque al llegar a la ' / ' daria error.

Gracias y un saludo.
  #2 (permalink)  
Antiguo 08/05/2015, 00:41
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 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

Etiquetas: char, int, lenguaje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.