Ciao a tutti, ho "creato" una libreria (libdataora) che tramite due funzioni mi dovrebbe dare in ritorno rispettivamente una stringa della data odierna (con il formato AAAA/MM/GG) e una stringa con l' ora di quando è stata eseguito il programma (con il formato OO:MM:SS).
Questo è il file della libreria (libdataora.h):
Questo è il file cpp (dataora.cpp):codice:#ifndef LIBDATAORA_H #define LIBDATAORA_H class DataOra{ public: const char *FData(); const char *FOra();}; #endif /* LIBDATAORA_H */
E questo è il file del main (main.cpp):codice:#include <stdio.h> #include <string.h> #include <time.h> #include <iostream> #include <sstream> #include "libdataora.h" using namespace std; const char* DataOra::FData() { time_t t = time(NULL); tm *tempo; tempo = localtime(&t); int giorno,mese,anno; giorno=tempo->tm_mday; mese=1+(tempo->tm_mon); anno=1900+(tempo->tm_year); std::ostringstream D; D << giorno << "/" << mese << "/" << anno ; std::cout << D.str() << std::endl; std::string str; str=D.str(); const char *cstr = str.c_str(); return cstr; } const char* DataOra::FOra() { time_t t = time(NULL); tm *tempo; tempo = localtime(&t); int ora,minuti,secondi; ora=tempo->tm_hour; minuti=tempo->tm_min; secondi=tempo->tm_sec; std::ostringstream O; O << ora << ":" << minuti << ":" << secondi ; std::cout << O.str() << std::endl; std::string str; str=O.str(); const char *cstr = str.c_str(); return cstr; }
Il problema si crea perchè quando vado a fare il printf sul main.cpp non vengono visualizzate le stringhe corrette, infatti se faccio con %d visualizzo dei numeri (a mio parere scaturiti dalla stringa esatta della data o dell' ora, ma non so come fare per ritornare in dietro e ricavare la stringa corretta) e se faccio %c invece stampa a video dei caratteri ASCII strani, penso che sia il corrispondente del numero. Come posso risolvere ?codice:#include <stdio.h> #include <stdlib.h> #include "libdataora.h" int main() { char d,o; DataOra DO; d=*DO.FData(); o=*DO.FOra(); //printf("%d",&d); //printf("%c",&d); //printf("%d",&c); //printf("%c",&o); printf("\n\n"); return 0; }
PS: Questo programma mi serve, poi, per immettere dei dati all 'interno di un database MySQL, e invece di scrivere tutto su un file .cpp volevo "pulire il codice" dividendo in vari file, ognuno con delle funzioni particolari.
Grazie.

Rispondi quotando
