Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
static const char *const days[] = { /* Массив имен дней */ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",};time_t now;struct tm *curtime;time(&now); /* Получить текущее время */curtime = gmtime(&now); /* Разложить его */printf("Day of the week: %sn", days[curtime->tm_wday]); /* Проиндексировать и вывести */Как
gmtime()localtime()struct tmstruct tmstruct tmstructstatic const char *const days[] = { /* Как ранее */ };time_t now;struct tm curtime; /* Структура, а не указатель */time(&now); /* Получить текущее время */curtime = *gmtime(&now); /* Разложить его и скопировать данные */printf("Day of the week: %sn", days[curtime.tm_wday]); /* Проиндексировать и напечатать, использовать . , а не -> */Поле
tm_isdst6.1.3. Форматирование даты и времени
Примеры в предыдущем разделе показали, как поля в
struct tm6.1.3.1. Простое форматирование времени:
asctime()ctime()Две первые стандартные процедуры, перечисленные ниже, выводят данные в фиксированном формате:
#include <time.h> /* ISO С */char *asctime(const struct tm *tm);char *ctime(const time_t *timep);Как и в случае с
gmtime()localtime()asctime()ctime()asctime()ctime()#include <stdio.h>#include <time.h>int main(void) { time_t now; time(&now); printf("%s", ctime(& now));}После запуска эта программа выводит результат в виде: '
Thu May 22 15:44:21 2003Рис. 6.1. Возвращаемая функциями
ctime()asctime()Значительная часть старого кода Unix полагается на тот факт, что значения в возвращенной строке имеют фиксированную позицию. При использовании этих функций помните, что они включают завершающий символ конца строки. Поэтому наш небольшой пример программы использует для
printf()%s%snctime()localtime()time_t now;char *curtime;time(&now);curtime = asctime(localtime(&now));6.1.3.2. Сложное форматирование времени:
strftime()Хотя часто достаточно использования
asctime()ctime()• Формат вывода фиксирован. Нет способа изменить порядок элементов.
• В вывод не включаются сведения о часовом поясе.
• В выводе используются сокращенные названия месяца и дня.
• В выводе используются английские названия месяцев и дней.
По этим причинам C89 ввело стандартную библиотечную процедуру
strftime()#include <time.h> /* ISO С */size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);strftime()sprintf()char *sБуфер для форматированной строки.
size_t maxРазмер буфера.
const char *formatФорматирующая строка.
const struct tm *tmУказатель на
struct tm
