Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/07/2011, 17:58
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Hora del sistema

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.