[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