#include #include #include "circular_buf.h" void initialize_buffer(struct circular_buffer* cb) { cb->buf_head = 0; cb->buf_tail = 0; } // Проверка, является ли буфер пустым int buffer_empty(const struct circular_buffer* cb) { return cb->buf_head == cb->buf_tail; } // Проверка, является ли буфер полным int buffer_full(const struct circular_buffer* cb) { return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true } // Запись элемента в буфер void write_buffer(struct circular_buffer* cb, int value) { if (buffer_full(cb)) { // проверка на заполненность return; } cb->buffer[cb->buf_tail] = value;//записывает значение value в элемент массива buffer в хвост cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;//присваивается cb->buf_tail, обновляя его значение на следующий индекс в кольцевом буфере } // Чтение элемента из буфера int read_buffer(struct circular_buffer* cb) { if (buffer_empty(cb)) { //проверяет буффер на пустоту return -1;// -1 в качестве индикатора ошибки } int value = cb->buffer[cb->buf_head]; //читаем значение из массива по индексу головы cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1 return value; }