Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/07/2011, 18:09
Avatar de baker1562
baker1562
 
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 10 meses
Puntos: 9
Respuesta: Hora del sistema

Cita:
Iniciado por sam90 Ver Mensaje
Te recomiendo guardar la varaible time_t y no la cadena de caractes. Si guardas el time_t a la hora de mostrar los datos puede cambiar el formato rapidamentes. De la otra forma no.

Ademas no se como trabaja las funciones esas del tiempo. Pero imagino que el string que te estan devolviendo es statico. Eso quiere decir que el puntero que devuelven siempre apunta al mismo lado. Asi que el segundo llamado pisa al primero.
Aviso esta es una suposicion mia. Saludos

Código C++:
Ver original
  1. #include <iostream>
  2. #include <ctime>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     const char *Fecha[3];
  10.     time_t fechas[3];
  11.     int opcion;
  12.     int i=0;
  13.     int controlador;
  14.     string respuesta;
  15.    
  16.     while(respuesta!="N" && respuesta!="n")
  17.     {
  18.    
  19.     cout<<"Presione 1 para entrar!!!"<<endl;
  20.     cout<<"Presione 2 para mostrar!!!"<<endl;
  21.     cin>>opcion;
  22.    
  23.     time_t tAct=time(NULL);
  24.    
  25.  
  26.    
  27.     switch(opcion)
  28.     {
  29.    
  30.     case 1:
  31.          
  32.          
  33.          cout<<"Hora del sistema:"<<endl;
  34.          cout<<asctime(localtime(&tAct));
  35.          fechas[i] = tAct;
  36.          controlador=i;
  37.          i++;
  38.          cout<<endl;
  39.          
  40.  
  41.          
  42.          
  43.          
  44.     break;
  45.    
  46.     case 2:
  47.          
  48.          for(int i=0;i<(controlador+1);i++)
  49.          {
  50.                  cout<<"Fechas"<<setw(10)<<asctime(localtime(&fechas[i]))<<endl;
  51.                  cout<<endl;
  52.                  
  53.                  
  54.                  }
  55.                  
  56.  
  57.          
  58.     break;
  59. }
  60.     cout<<"Desea realizar una nueva accion: s/n?"<<endl;
  61.     cin>>respuesta;
  62.    
  63.  
  64.    
  65. }
  66.     return 0;
  67.    
  68. }

Hice la prueba de imprimir el puntero y efectivamente en dos llamados distintos el valor del puntero devuelto es el mismo asi que el segundo llamado te esta pisando al primero.

Si quieres manejar igualmente con cadenas deberias copiarla a un string o un array de caracteres.
grax me sirvio eso era lo ue queria aunque me quedaron dudas de porque se guarda tAct y no asctime(localtime(&tAct))