Я задаюсь вопросом, там какая-либо функция, которая возвратила бы текущее время в секундах, всего 2 цифры секунд? Я использую gcc 4.4.2.
Следующая полная программа показывает, как получить доступ к значению seconds:
#include <stdio.h>
#include <time.h>
int main (int argc, char *argv[]) {
time_t now;
struct tm *tm;
now = time(0);
if ((tm = localtime (&now)) == NULL) {
printf ("Error extracting time stuff\n");
return 1;
}
printf ("%04d-%02d-%02d %02d:%02d:%02d\n",
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
return 0;
}
Она выводит:
2010-02-11 15:58:29
Работает она следующим образом.
time()
, чтобы получить наилучшее приближение к текущему времени (обычно это число секунд с момента эпохи, но на самом деле стандарт этого не требует). localtime()
для преобразования этого значения в структуру, которая содержит отдельные поля даты и времени, среди прочего. tm_sec
в вашем случае, но я показал несколько из них). Помните, что вы также можете использовать gmtime()
вместо localtime()
, если вам нужно время по Гринвичу, или UTC для тех, кто слишком молод, чтобы помнить :-).
#include <stdio.h>`
int main(int argc, char **argv)
{
FILE *inputFiles[argc - 1];
int i;
for (i = 1; i < argc; i++)
{
printf("%s\n",argv[i]);
inputFiles[i] = fopen(argv[i], "r");
printf("%p\n",inputFiles[i]);
}
return 0;
}
Он печатает различные указатели для каждого указателя файла вместе с именами. Позволяет ОС правильно закрывать файлы:)
-121--4859528-В дополнение к ответам, приведенным выше, помните, что структуры C++ поддерживают наследование и поэтому могут содержать указатели на таблицы. Это может иметь большое значение при сериализации и десериализации этих структур между процессами. Шаблоны также поддерживаются.
-121--1158522- Более портативный способ сделать это - получить текущее время в виде времени _ t
struct:
time_t mytime = time((time_t*)0);
Получить struct tm
для этого времени _ t
:
struct tm *mytm = localtime(&mytime);
Проверить tm _ sec
членов mytm
. В зависимости от библиотеки C, нет гарантии, что возвращаемое значение time ()
основано на количестве секунд с начала минуты.
Вы можете получить текущее время с помощью gettimeofday
(C11), time
(Linux) или localtime_r
(POSIX); в зависимости от того, какой календарь и эпоху вам интересны. Вы можете преобразовать его в секунды, прошедшие после календарной эпохи, или секунды текущей минуты, в зависимости от того, что будет после:
#include <stdio.h>
#include <string.h>
#include <time.h>
int main() {
time_t current_secs = time(NULL);
localtime_r(¤t_secs, ¤t_time);
char secstr[128] = {};
struct tm current_time;
strftime(secstr, sizeof secstr, "%S", ¤t_time);
fprintf(stdout, "The second: %s\n", secstr);
return 0;
}