Domanda

devo ottenere il tempo corrente in una "HH: MM: SS" -format in un array di caratteri (stringa) così posso uscita il risultato seguito semplicemente con un printf("%s", timeString);

Sono abbastanza confuso sulle timeval e time_t tipi A proposito, in modo che qualsiasi spiegazione sarebbe impressionante:)

EDIT: Così ho provato con strftime, ecc, ed è un po funzionato. Ecco il mio codice:

time_t current_time;
struct tm * time_info;
char timeString[8];

time(&current_time);
time_info = localtime(&current_time);

strftime(timeString, 8, "%H:%M:%S", time_info);
puts(timeString);

Ma l'output è questo: "13: 49: 53 bis ?? J`aS"

Che cosa sta succedendo con il " un ?? J`aS? " alla fine?

È stato utile?

Soluzione

Stai diventando spazzatura da questo codice:

time_t current_time;
struct tm * time_info;
char timeString[8];

time(&current_time);
time_info = localtime(&current_time);

strftime(timeString, 8, "%H:%M:%S", time_info);
puts(timeString);

Perché non stai permettendo lo spazio per un terminatore null (\ 0) sulla corda, in modo che quando la corda è stampato, non sa dove la fine è spazzatura e inteprets casuale nel prossimo po 'di memoria come parte della stringa.

Modificare in questo modo:

time_t current_time;
struct tm * time_info;
char timeString[9];  // space for "HH:MM:SS\0"

time(&current_time);
time_info = localtime(&current_time);

strftime(timeString, sizeof(timeString), "%H:%M:%S", time_info);
puts(timeString);

E sarà funzionare correttamente a causa strftime() avrà abbastanza spazio per aggiungere un \ 0. Si noti che sto usando sizeof (array) per evitare il rischio dimenticare di modificare il numero in entrambi i luoghi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top