Решено: time.h (Помогите, плиз :))
Модератор: Модераторы разделов
-
fleisch
- Сообщения: 40
- ОС: OpenSuSE Linux 11.1
Решено: time.h
Никак не могу понять, как мне получить просто-напросто текущее время в виде обычной строки?
-
skillergti
- Сообщения: 34
- ОС: slackware
Re: Решено: time.h
char* ctime(const time_t*) в time.h
-
drag0n
- Сообщения: 156
- Статус: Дракон-линуксоид
- ОС: Slackware Linux
Re: Решено: time.h
Как то так:
Функции localtime и asctime возвращают указатели на статически выделенные переменные, поэтому беспокоиться о выделении под них памяти и ее освобождении не нужно.
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main () {
time_t curr_time; //текущее время в секундах от начала эпохи
struct tm * curr_time_tm; //время в исчислении более понятном для человека (см. [b]man localtime[/b] для подробностей)
char * strtime; //строка с временем
time(&curr_time); //получаем текущее время системы
curr_time_tm = localtime(&curr_time); //преобразуем curr_time в curr_time_tm
strtime = asctime(curr_time_tm); //преобразуем curr_time_tm в строку
printf("%s\n", strtime);
return 0;
}Функции localtime и asctime возвращают указатели на статически выделенные переменные, поэтому беспокоиться о выделении под них памяти и ее освобождении не нужно.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Решено: time.h
Есть еще такая функция strftime, позволяет получить время в любом нужном формате.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
fleisch
- Сообщения: 40
- ОС: OpenSuSE Linux 11.1
Re: Решено: time.h
Всем огромное спасибо 
-
MiK13
- Сообщения: 1292
- ОС: Linux Debian
Re: Решено: time.h
Хорорая функция, жаль, что раньше не знал, Но не понятны два момента:
1. зачем в ней нужен 2-й параметр size_t max? Ведь, если ей передаётся указатель на строку, то это же дело программиста -- заботиться о том, чтобы все знаки заданного им формата поместились в эту строку.
2. Для чего функция возвращает число преобразованных знаков? Почему не указатель на строку, в котороую она поместила время в текстовом виде?
P.S. Сначала подумал, что это учтено в strptime, но, почитав, понял, что эта функция наоборот -- преобразует по формату время из текстового вида в struct tm.
-
MiK13
- Сообщения: 1292
- ОС: Linux Debian
Re: Решено: time.h
Побочный эффект -- эти функции не являются реентерабельными. Поэтому добавлены аналогичные функции, к имени которых добавено _r (в Watcom имена немного другие) -- в них результат помещается в переменную вызывающей программы.