[C con Clase] Punteros y arrays

Antonio Cascales antonio.cascales en gmail.com
Dom Jul 10 20:25:02 CEST 2011


Hola Steven:

   Acabo de modificar los detalles que me comentabas en el mail, pero sigue igual, sin mostrar el resultado del segundo printf. Intento adjuntar el archivo, a ver si así podéis compilarlo y ver lo que sucede.

   Gracias de nuevo, y disculpad las molestias.

  ----- Original Message ----- 
  From: Steven Davidson 
  To: Lista de correo sobre C y C++ 
  Sent: Saturday, July 09, 2011 12:14 PM
  Subject: Re: [C con Clase] Punteros y arrays


  Hola Antonio,


  2011/7/9 Antonio Cascales <antonio.cascales en gmail.com>

    Hola a todos de nuevo:

       Steven, gracias por los ejemplos. Estoy intentando copiar un ejemplo que viene en la web de donde me dijiste que consultase la función strftime(), haciéndole pequeñas variaciones, como el formato de salida, o el nombre de las variables o punteros, pero me dá algún tipo de error y no logro averiguar porqué no me termina de funcionar correctamente.

       Os copio el código que yo he puesto, a ver si podéis indicarme el error. De hecho, es bastante raro, porque así como está, lo único que no se me muestra, es el segundo printf, pero si a este código, al final le añado la expresión "return 0;", el programa dá algún tipo de error, y windows me obliga a cerrarlo.



  Veamos el código fuente. Te comento a medida que vaya viendo el programa.


    /* Ejercicio para mostrar la fecha actual con strftime() */

    #include <stdio.h>
    #include <time.h>

    int main() {
    char resultado[200];
        time_t ahora;
        struct tm *fecha;
        
        ahora = time(NULL);
        fecha = localtime( &ahora);
        
         strftime( resultado, 200, "%A %d %B %Y %h%M%S", fecha);
        
        printf("La fecha y hora local es: %s", asctime(fecha));
        printf("La fecha es: %s%s\n", resultado);


  Aquí está el problema. Has escrito dos %s, cuando en realidad es sólo uno, porque únicamente pasas una cadena de caracteres - y no, dos. Debería ser,

  printf( "La fecha es: %s\n", resultado );

       
        system("pause");


  Siempre debes indicar 'return' para 'main()'.

    }

       conociéndome, seguro que es cualquier chorrada, pero por más que reviso el ejemplo y mi código, no veo nada tan distinto como para que el segundo printf no se me muestre por pantalla.


  La verdad es que los ejemplos en la referencia son más bien de C que propios de C++. En lugar de usar 'printf()', usa 'cout <<' que es más amigable. Esto sería,

  #include <iostream>
  #include <ctime>
  #include <cstdlib>

  using namespace std;

  int main()
  {
    char resultado[200];
    time_t ahora;
    struct tm *fecha;

    ahora = time(NULL);
    fecha = localtime( &ahora);

    strftime( resultado, 200, "%A %d %B %Y %h%M%S", fecha );

    cout << "La fecha y hora local es: " << asctime(fecha);
    cout << "La fecha es: " << resultado << endl;
     
    system( "pause" );
    return 0;
  }

  Para usar 'system()', necesitas incluir <cstdlib>.


  Espero que haya aclarado las dudas.

  Steven



------------------------------------------------------------------------------


  _______________________________________________
  Lista de correo Cconclase Cconclase en listas.conclase.net
  http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
  Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110710/fcca0364/attachment.html>
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: Fecha.c
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110710/fcca0364/attachment.c>


Más información sobre la lista de distribución Cconclase