PDA

View Full Version : Inserire ora di sistema in C


Re_Kotc
15-02-2007, 11:35
sto cercando di stampare a video l'ora di sistema..ovviamente usando il C, su internet ho trovato questo :

char *ctime(time_t *ptr)
char *ctime_r(time_t *ptr, char *output)
include: <time.h>
Note that the parameter must be a pointer to the numeric time.
time_t values are produced by time.
Converts the time provided into a human-readable string, the format
is illustrated by these examples:
Mon Jan 18 22:14:07 2038\n
Fri Jan 8 12:14:07 2038\n
Mon Jan 18 08:20:37 2038\n
Fri Dec 13 15:45:52 1901\n
Dates are padded with a space if only one digit long, and time components
are given leading zeros. The date is always absurdly followed by a
newline character, which usually has to be removed.
Warning the char* string returned is a static array, every call
of ctime uses the same array, so the results of any call are always
overwritten by the bext call.
Ctime_r is exactly the same as ctime, except that the caller must provide
an array of chars big enough to hold the result. The return value is the
same as the second parameter.

l'esempio che mostra è il seguente..ma non funziona almeno sul mio compilatore, mi dice "`strlen' cannot be used as a function"
ammetto che ho capito poco di come stampa l'ora questa funzione ma speravo di cavarmela con l'esempio..mi sapete dire qualcosa? grazie

Example:
time_t tim=time(NULL);
char *s=ctime(&tim);
s[strlen(s)-1]=0; // remove \n
printf("it is %s now.\n", s);
time_t values are produced from the clock by time.
time_t values are produced from y,m,d,h,m,s parts by mktime and timegm.

andbin
15-02-2007, 12:03
sto cercando di stampare a video l'ora di sistemaCosì è corretto, garantisco:
#include <stdio.h>
#include <string.h>
#include <time.h>

int main (void)
{
time_t tim = time (NULL);
char *s = ctime (&tim);

s[strlen(s)-1] = 0;
printf ("Data/ora: %s\n", s);

return 0;
}
Ma non è l'unico modo. Vedi ad esempio <questo> (http://www.hwupgrade.it/forum/showpost.php?p=12963734&postcount=4) mio vecchio post in cui facevo un esempio di uso della funzione strftime.

Re_Kotc
15-02-2007, 15:45
grazie ora non da più errori!--però non riesco a vedere l'output in fase di esecuzione, come posso fare?

andbin
15-02-2007, 15:55
però non riesco a vedere l'output in fase di esecuzione, come posso fare?Fammi indovinare .... avvii il programma dal tuo ambiente di sviluppo, ti si apre la console e poi sparisce subito, vero??

Leggi <qui> (http://www.hwupgrade.it/forum/showthread.php?t=1323690), in particolare il post #7.

Re_Kotc
15-02-2007, 15:59
:D grazie!...cmq io usavo un altro metodo alla fine del codice scrivevo:

...
loop: (o qualsiasi flag)
goto loop; (XD così stava aperto a eseguire il niente..ma almeno era aperto)
}

solo che in questo caso non funzionava!...grazie mille!

Re_Kotc
15-02-2007, 16:03
però c'è un problema-...non funziona cmq..cioè non rimane aperto..ed è l'unico programma che fa così!...ma io ho copiato il codice come lo avevi postato te-...:cry: :cry: :cry:

Re_Kotc
15-02-2007, 16:06
mi correggo di nuovo...da prompt funziona regolarmente...non funziona piuttosto se faccio partire direttamente l'eseguibile

andbin
15-02-2007, 16:40
mi correggo di nuovo...da prompt funziona regolarmente...non funziona piuttosto se faccio partire direttamente l'eseguibileCioè che cosa hai scritto di preciso nel sorgente??

Re_Kotc
15-02-2007, 17:14
ho scritto system("PAUSE") e ho aggiunto window.h e da prompt funziona, se faccio partire l'eseguibile apre e chiude subito e non vedo nulla, cmq ho visto che anche usando il mio metodo della flag con il goto il programma resta aperto ma sempre e solo da prompt..boh!..cmq adesso riesco a vedere la data

andbin
15-02-2007, 17:29
ho scritto system("PAUSE") e ho aggiunto window.h e da prompt funziona, se faccio partire l'eseguibile apre e chiude subito e non vedo nulla, cmq ho visto che anche usando il mio metodo della flag con il goto il programma resta aperto ma sempre e solo da prompt..boh!..cmq adesso riesco a vedere la dataPer usare la funzione system() di norma si include <stdlib.h>, non <windows.h> (che è per le API Win32).
Poi bisogna vedere dove hai messo la system. Devi metterla alla fine del main, prima del return;

Re_Kotc
15-02-2007, 17:50
grazie ora funziona!...l'avevo messa appena sotto il return prima di chiudere la graffa...ora va...anche se il firewall mi blocca l'esecuzione per comportamento sospetto e devo impostare un eccezione :D :D grazie ancora