[C con Clase] Punteros y arrays

Steven Davidson srd4121 en njit.edu
Sab Jul 9 12:14:08 CEST 2011


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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110709/1cd77ee3/attachment.html>


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