Time.h [HELP]

Iniciado por Borluck, 7 Mayo 2013, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Borluck

Hola a todos compañeros!

Bueno...como siempre me surgen dudas y esta vez está referida al uso de la función time().

Quisiera poder obtener la hora del sistema y almacenarla en un archivo .txt pero cuando la intento sacar me devuelve un número ENORME que para mí no tiene sentido alguno.

Les agradezco la participación y la ayuda. Buen día!   :P ;D

mr.blood

Definicion de time()
time_t time(time_t *tiempoPtr);

No puedes leerla directamente, debes recogerla en la estructura para luego leer cada apartado ;).
Tienes muchos ejemplos en la red buscando mismamente como time_t te saldran.

Sa1uDoS

leosansan

#2
Cita de: Borluck en  7 Mayo 2013, 18:25 PM
Hola a todos compañeros!

Bueno...como siempre me surgen dudas y esta vez está referida al uso de la función time().

Quisiera poder obtener la hora del sistema y almacenarla en un archivo .txt pero cuando la intento sacar me devuelve un número ENORME que para mí no tiene sentido alguno.


Para que conste, lo primero que deberías es colgar el código o trozo donde podamos averiguar el posible error. No somos adivinos.

Para que no te vuelvas loco buscando ejemplos, te dejo un cronómetro simple  De ahí podrás sacar conclusiones en cuanto a las variables para guardar el tiempo:


Código (cpp) [Seleccionar]

#include <stdio.h>
#include <time.h>
#include <windows.h>
struct tm *tiempo;
time_t t;
void cronometro(void);
int main(void)
{
  cronometro();
  return 0;
}

void cronometro(void)
{
   int hora,minuto,limite,segundo;
   t=time(NULL);
   tiempo = localtime(&t);
   limite=tiempo->tm_min+2;
   while(1)
   {
       Sleep (1000);
       t=time(NULL);
       tiempo = localtime(&t);
       hora=tiempo->tm_hour;
       minuto=tiempo->tm_min;
       segundo=tiempo->tm_sec;
       printf("%d:%d:%d\r",hora,minuto,segundo);
   }
}


Saluditos!. .....  

rir3760

Cita de: Borluck en  7 Mayo 2013, 18:25 PMQuisiera poder obtener la hora del sistema y almacenarla en un archivo .txt
Si solo necesitas una cadena con la hora y fecha actual puedes utilizar la función time para obtener esta como un valor de tipo time_t y a continuación la función ctime para generar la cadena. Mas o menos así:
time_t t;

/* ... */

time(&t);
fprintf(stdout, "%s", ctime(&t));

Por supuesto se debe, para empezar, sustituir stdout en la llamada a fprintf por el stream correspondiente.

----

O si lo que quieres es procesar de alguna forma los campos (minuto, hora, etc.) puedes hacerlo manualmente (siguiendo el ejemplo de leosan) o utilizando la función strftime (similar a sprintf). Un ejemplo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define LONG_CADENA 128

int main(void)
{
   time_t t;
   struct tm *u;
   char cadena[LONG_CADENA];
   
   /* 1) Obtener la fecha actual ('time_t') */
   if ((t = time(NULL)) == (time_t) -1)
      return EXIT_FAILURE;
   
   /* 2) Obtener la fecha actual ('struct tm *') */
   u = localtime(&t);
   
   /* Imprimir la fecha manualmente mediante printf */
   printf("%d/", u->tm_year + 1900);
   printf("%02d/", u->tm_mon + 1);
   printf("%02d\n", u->tm_mday);
   
   /* Imprimir la fecha mediante strftime */
   strftime(cadena, LONG_CADENA, "%Y/%m/%d", u);
   printf("%s\n", cadena);
   
   return EXIT_SUCCESS;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language