Загрузить файлы в «/»
This commit is contained in:
97
clock_pg3.c
Normal file
97
clock_pg3.c
Normal file
@ -0,0 +1,97 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h> // для sleep()
|
||||
#include <signal.h> // для обработки сигналов
|
||||
#include <stdlib.h> // для exit()
|
||||
#include "pseudographic_font_3.h"
|
||||
|
||||
// Флаг для корректного завершения
|
||||
volatile sig_atomic_t keep_running = 1;
|
||||
|
||||
// Обработчик сигнала SIGINT (Ctrl+C)
|
||||
void handle_sigint(int sig) {
|
||||
keep_running = 0; // Устанавливаем флаг для выхода из цикла
|
||||
}
|
||||
|
||||
// Функция для вывода псевдографического времени
|
||||
void print_pseudographic_time(int hours, int mins, int secs) {
|
||||
// Проверяем валидность времени
|
||||
if (hours < 0 || hours > 23 || mins < 0 || mins > 59 || secs < 0 || secs > 59) {
|
||||
printf("\033[H"); // Возврат в начало
|
||||
printf("\033[1mInvalid time: %02d:%02d:%02d\033[0m\n", hours, mins, secs);
|
||||
fflush(stdout);
|
||||
return;
|
||||
}
|
||||
|
||||
// Преобразуем время в строку формата "ЧЧ:ММ:СС"
|
||||
char time_str[9];
|
||||
snprintf(time_str, 9, "%02d:%02d:%02d", hours, mins, secs);
|
||||
|
||||
// Получаем псевдографические символы для каждой цифры и разделителя
|
||||
const char** chars[8];
|
||||
for (int i = 0; i < 8; i++) {
|
||||
chars[i] = get_pseudographic_char_3(time_str[i]);
|
||||
}
|
||||
|
||||
// Перемещаем курсор в верхний левый угол (без очистки экрана)
|
||||
printf("\033[H");
|
||||
|
||||
// Выводим три строки псевдографики
|
||||
for (int row = 0; row < 3; row++) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (i == 2 || i == 5) {
|
||||
// Жирный серый для разделителя (:)
|
||||
printf("\033[1m\033[90m%s\033[0m", chars[i][row]);
|
||||
} else {
|
||||
// Жирный белый для цифр
|
||||
printf("\033[1m\033[37m%s\033[0m", chars[i][row]);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// Устанавливаем обработчик сигнала SIGINT
|
||||
signal(SIGINT, handle_sigint);
|
||||
|
||||
// Скрываем курсор
|
||||
printf("\033[?25l");
|
||||
fflush(stdout);
|
||||
|
||||
// Выводим три пустые строки для резервирования места
|
||||
printf("\n\n\n");
|
||||
|
||||
while (keep_running) {
|
||||
time_t rawtime;
|
||||
struct tm *timeinfo;
|
||||
|
||||
// Получаем текущее время
|
||||
if (time(&rawtime) == (time_t)-1) {
|
||||
printf("\033[H\033[1mFailed to get time\033[0m\n");
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
continue;
|
||||
}
|
||||
timeinfo = localtime(&rawtime);
|
||||
if (timeinfo == NULL) {
|
||||
printf("\033[H\033[1mFailed to parse time\033[0m\n");
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Выводим псевдографическое время
|
||||
print_pseudographic_time(timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
|
||||
|
||||
sleep(1); // Спим одну секунду
|
||||
}
|
||||
|
||||
// Показываем курсор и очищаем экран перед выходом
|
||||
printf("\033[2J\033[H\033[?25h");
|
||||
fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// gcc clock_pg3.c -o clock_pg3
|
97
clock_pg5.c
Normal file
97
clock_pg5.c
Normal file
@ -0,0 +1,97 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h> // для sleep()
|
||||
#include <signal.h> // для обработки сигналов
|
||||
#include <stdlib.h> // для exit()
|
||||
#include "pseudographic_font_5.h"
|
||||
|
||||
// Флаг для корректного завершения
|
||||
volatile sig_atomic_t keep_running = 1;
|
||||
|
||||
// Обработчик сигнала SIGINT (Ctrl+C)
|
||||
void handle_sigint(int sig) {
|
||||
keep_running = 0; // Устанавливаем флаг для выхода из цикла
|
||||
}
|
||||
|
||||
// Функция для вывода псевдографического времени
|
||||
void print_pseudographic_time(int hours, int mins, int secs) {
|
||||
// Проверяем валидность времени
|
||||
if (hours < 0 || hours > 23 || mins < 0 || mins > 59 || secs < 0 || secs > 59) {
|
||||
printf("\033[H"); // Возврат в начало
|
||||
printf("\033[1mInvalid time: %02d:%02d:%02d\033[0m\n", hours, mins, secs);
|
||||
fflush(stdout);
|
||||
return;
|
||||
}
|
||||
|
||||
// Преобразуем время в строку формата "ЧЧ:ММ:СС"
|
||||
char time_str[9];
|
||||
snprintf(time_str, 9, "%02d:%02d:%02d", hours, mins, secs);
|
||||
|
||||
// Получаем псевдографические символы для каждой цифры и разделителя
|
||||
const char** chars[8];
|
||||
for (int i = 0; i < 8; i++) {
|
||||
chars[i] = get_pseudographic_char_5(time_str[i]);
|
||||
}
|
||||
|
||||
// Перемещаем курсор в верхний левый угол (без очистки экрана)
|
||||
printf("\033[H");
|
||||
|
||||
// Выводим пять строк псевдографики
|
||||
for (int row = 0; row < 5; row++) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (i == 2 || i == 5) {
|
||||
// Жирный серый для разделителя (:)
|
||||
printf("\033[1m\033[90m%s\033[0m", chars[i][row]);
|
||||
} else {
|
||||
// Жирный белый для цифр
|
||||
printf("\033[1m\033[37m%s\033[0m", chars[i][row]);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// Устанавливаем обработчик сигнала SIGINT
|
||||
signal(SIGINT, handle_sigint);
|
||||
|
||||
// Скрываем курсор
|
||||
printf("\033[?25l");
|
||||
fflush(stdout);
|
||||
|
||||
// Выводим пять пустых строк для резервирования места
|
||||
printf("\n\n\n\n\n");
|
||||
|
||||
while (keep_running) {
|
||||
time_t rawtime;
|
||||
struct tm *timeinfo;
|
||||
|
||||
// Получаем текущее время
|
||||
if (time(&rawtime) == (time_t)-1) {
|
||||
printf("\033[H\033[1mFailed to get time\033[0m\n");
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
continue;
|
||||
}
|
||||
timeinfo = localtime(&rawtime);
|
||||
if (timeinfo == NULL) {
|
||||
printf("\033[H\033[1mFailed to parse time\033[0m\n");
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Выводим псевдографическое время
|
||||
print_pseudographic_time(timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
|
||||
|
||||
sleep(1); // Спим одну секунду
|
||||
}
|
||||
|
||||
// Показываем курсор и очищаем экран перед выходом
|
||||
printf("\033[2J\033[H\033[?25h");
|
||||
fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// gcc clock_pg5.c -o clock_pg5
|
99
clock_pg7.c
Normal file
99
clock_pg7.c
Normal file
@ -0,0 +1,99 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h> // для sleep()
|
||||
#include <signal.h> // для обработки сигналов
|
||||
#include <stdlib.h> // для exit()
|
||||
#include "pseudographic_font_7.h"
|
||||
|
||||
// Флаг для корректного завершения
|
||||
volatile sig_atomic_t keep_running = 1;
|
||||
|
||||
// Обработчик сигнала SIGINT (Ctrl+C)
|
||||
void handle_sigint(int sig) {
|
||||
keep_running = 0; // Устанавливаем флаг для выхода из цикла
|
||||
}
|
||||
|
||||
// Функция для вывода псевдографического времени
|
||||
void print_pseudographic_time(int hours, int mins, int secs) {
|
||||
// Проверяем валидность времени
|
||||
if (hours < 0 || hours > 23 || mins < 0 || mins > 59 || secs < 0 || secs > 59) {
|
||||
printf("\033[H"); // Возврат в начало
|
||||
printf("\033[1mInvalid time: %02d:%02d:%02d\033[0m\n", hours, mins, secs);
|
||||
fflush(stdout);
|
||||
return;
|
||||
}
|
||||
|
||||
// Преобразуем время в строку формата "ЧЧ:ММ:СС"
|
||||
char time_str[9];
|
||||
snprintf(time_str, 9, "%02d:%02d:%02d", hours, mins, secs);
|
||||
|
||||
// Получаем псевдографические символы для каждой цифры и разделителя
|
||||
const char** chars[8];
|
||||
for (int i = 0; i < 8; i++) {
|
||||
chars[i] = get_pseudographic_char_7(time_str[i]);
|
||||
}
|
||||
|
||||
// Перемещаем курсор в верхний левый угол
|
||||
printf("\033[H");
|
||||
|
||||
// Выводим восемь строк псевдографики
|
||||
for (int row = 0; row < 8; row++) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (i == 2 || i == 5) {
|
||||
// Жирный серый для разделителя (:)
|
||||
printf("\033[1m\033[90m%s\033[0m", chars[i][row]);
|
||||
} else {
|
||||
// Жирный белый для цифр
|
||||
printf("\033[1m\033[37m%s\033[0m", chars[i][row]);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// Устанавливаем обработчик сигнала SIGINT
|
||||
signal(SIGINT, handle_sigint);
|
||||
|
||||
// Скрываем курсор
|
||||
printf("\033[?25l");
|
||||
fflush(stdout);
|
||||
|
||||
// Выводим восемь пустых строк для резервирования места
|
||||
for (int i = 0; i < 8; i++) {
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
while (keep_running) {
|
||||
time_t rawtime;
|
||||
struct tm *timeinfo;
|
||||
|
||||
// Получаем текущее время
|
||||
if (time(&rawtime) == (time_t)-1) {
|
||||
printf("\033[H\033[1mFailed to get time\033[0m\n");
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
continue;
|
||||
}
|
||||
timeinfo = localtime(&rawtime);
|
||||
if (timeinfo == NULL) {
|
||||
printf("\033[H\033[1mFailed to parse time\033[0m\n");
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Выводим псевдографическое время
|
||||
print_pseudographic_time(timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
|
||||
|
||||
sleep(1); // Спим одну секунду
|
||||
}
|
||||
|
||||
// Показываем курсор и очищаем экран перед выходом
|
||||
printf("\033[2J\033[H\033[?25h");
|
||||
fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// gcc clock_pg7.c -o clock_pg7
|
61
clock_sr.c
Normal file
61
clock_sr.c
Normal file
@ -0,0 +1,61 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
// Функция определения времени года на английском
|
||||
const char* get_season(int month) {
|
||||
if (month == 12 || month == 1 || month == 2)
|
||||
return "Winter";
|
||||
else if (month >= 3 && month <= 5)
|
||||
return "Spring";
|
||||
else if (month >= 6 && month <= 8)
|
||||
return "Summer";
|
||||
else
|
||||
return "Autumn";
|
||||
}
|
||||
|
||||
// Функция названия месяца на английском
|
||||
const char* get_month_name(int month) {
|
||||
const char* months[] = {"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"};
|
||||
if (month >= 1 && month <= 12)
|
||||
return months[month - 1];
|
||||
else
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
// Функция названия дня недели на английском
|
||||
const char* get_weekday_name(int weekday) {
|
||||
const char* days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
|
||||
if (weekday >= 0 && weekday <= 6)
|
||||
return days[weekday];
|
||||
else
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
time_t rawtime;
|
||||
struct tm * timeinfo;
|
||||
|
||||
// Получаем текущее время
|
||||
time(&rawtime);
|
||||
timeinfo = localtime(&rawtime);
|
||||
|
||||
const char* season = get_season(timeinfo->tm_mon + 1);
|
||||
const char* month_name = get_month_name(timeinfo->tm_mon + 1);
|
||||
const char* weekday_name = get_weekday_name(timeinfo->tm_wday);
|
||||
|
||||
// Вывод в одну строку с отступом слева (4 пробела)
|
||||
printf(" %d/%s/%s | %d/%s | %02d:%02d:%02d\n",
|
||||
timeinfo->tm_year + 1900,
|
||||
season,
|
||||
month_name,
|
||||
timeinfo->tm_mday,
|
||||
weekday_name,
|
||||
timeinfo->tm_hour,
|
||||
timeinfo->tm_min,
|
||||
timeinfo->tm_sec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// gcc clock_sr.c -o clock_sr
|
85
clock_up.c
Normal file
85
clock_up.c
Normal file
@ -0,0 +1,85 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h> // для sleep() и usleep()
|
||||
#include <signal.h> // для обработки сигналов
|
||||
|
||||
// Функция определения времени года на английском
|
||||
const char* get_season(int month) {
|
||||
if (month == 12 || month == 1 || month == 2)
|
||||
return "Winter";
|
||||
else if (month >= 3 && month <= 5)
|
||||
return "Spring";
|
||||
else if (month >= 6 && month <= 8)
|
||||
return "Summer";
|
||||
else
|
||||
return "Autumn";
|
||||
}
|
||||
|
||||
// Функция названия месяца на английском
|
||||
const char* get_month_name(int month) {
|
||||
const char* months[] = {"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"};
|
||||
if (month >= 1 && month <= 12)
|
||||
return months[month - 1];
|
||||
else
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
// Функция названия дня недели на английском
|
||||
const char* get_weekday_name(int weekday) {
|
||||
const char* days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
|
||||
if (weekday >= 0 && weekday <= 6)
|
||||
return days[weekday];
|
||||
else
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
// Обработчик сигнала SIGINT (Ctrl+C)
|
||||
void handle_sigint(int sig) {
|
||||
// Показываем курсор обратно и делаем перенос строки
|
||||
printf("\033[?25h\n");
|
||||
fflush(stdout);
|
||||
// Выход из программы
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// Устанавливаем обработчик сигнала SIGINT
|
||||
signal(SIGINT, handle_sigint);
|
||||
|
||||
// Скрываем курсор
|
||||
printf("\033[?25l");
|
||||
fflush(stdout);
|
||||
|
||||
while (1) {
|
||||
time_t rawtime;
|
||||
struct tm * timeinfo;
|
||||
|
||||
// Получаем текущее время
|
||||
time(&rawtime);
|
||||
timeinfo = localtime(&rawtime);
|
||||
|
||||
const char* season = get_season(timeinfo->tm_mon + 1);
|
||||
const char* month_name = get_month_name(timeinfo->tm_mon + 1);
|
||||
const char* weekday_name = get_weekday_name(timeinfo->tm_wday);
|
||||
|
||||
// Возвращаем курсор в начало строки
|
||||
printf("\r %d\033[90m/\033[0m%s\033[90m/\033[0m%s \033[90;1m|\033[0m %d\033[90m/\033[0m%s \033[90;1m|\033[0m %02d\033[90m:\033[0m%02d\033[90m:\033[0m%02d",
|
||||
timeinfo->tm_year + 1900,
|
||||
season,
|
||||
month_name,
|
||||
timeinfo->tm_mday,
|
||||
weekday_name,
|
||||
timeinfo->tm_hour,
|
||||
timeinfo->tm_min,
|
||||
timeinfo->tm_sec);
|
||||
|
||||
fflush(stdout);
|
||||
|
||||
sleep(1); // Спим одну секунду
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// gcc clock_up.c -o clock_up
|
Reference in New Issue
Block a user