#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <conio.h> // dichiarazione di _kbhit()
using namespace std;
/* Macro per la cancellazione dello schermo. ATTENZIONE: funziona con
i sistemi operativi Microsoft Windows e DOS */
#define CLS system("cls")
int main()
{ char AmPm[3];
struct tm *oggi;
time_t tempo;
/* Cancella lo schermo */
CLS;
/*
Visualizza l'ora, i minuti ed i secondi fino a quando non viene
premuto un tasto
*/
while (!_kbhit()) { // kbhit ritorna true se viene premuto un tasto
// Legge il tempo di sistema
time(&tempo);
// Converte tempo nella struttura tm
oggi = localtime(&tempo);
// Porta l'ora dal formato a 24 a quello a 12
if(oggi->tm_hour > 12) {
strcpy(AmPm, "PM");
oggi->tm_hour -= 12;
}
else strcpy(AmPm, "AM");
/*
Il numero 11, sommato al puntatore ritornato da asctime, consente di
saltare i caratteri della stringa precedenti l'ora.
Lo specificatore .8%s consente invece di ignorare nella formattazione
i caratteri successivi a quelli dei secondi
*/
printf("%.8s %s\r", asctime(oggi) + 11, AmPm);
}
}