Files
lab0.1_letscontinue/str.h

63 lines
2.9 KiB
C
Raw Normal View History

2025-09-27 03:54:38 +03:00
#pragma once
#include <stddef.h>
// Str это структура, которая хранит в памяти строки произвольной длинны
2025-10-03 22:58:30 +03:00
// len -- содержит текущую длину строки (0 если строка не инициализирована или нулевого размера)
2025-09-27 03:54:38 +03:00
// capacity содержит размер динамически инициализированного массива ptr
struct Str {
2025-10-03 22:58:30 +03:00
int len;
2025-09-27 03:54:38 +03:00
int capacity;
char *ptr;
};
typedef struct Str str;
// Инициализация пустой строки
void str_init(str *s);
// Инициализация строки с данными
void str_init_data(str *s, const char *initial);
// Деинициализируем строку (освобождаем память по указателю ptr)
void str_deinit(str *s);
// Функция должна вернуть указатель на ptr
char *str_data(str *s);
2025-10-03 22:58:30 +03:00
//Функция копирует в строку содержимое cstr.
void str_set(str *s, char *cstr);
2025-09-27 03:54:38 +03:00
//Функция создаёт и возвращает новую строку, копию s
str str_copy(str *s);
2025-10-03 22:58:30 +03:00
// Функция возвращает количество символов ch в строке str
int str_count(str *s, char ch);
//добавляет к строке строку cstr
void str_append(str *s, char *cstr);
//добавляет к строке строку cstr
void str_append_n(str *s, char *cstr, int len);
//Если строка s содержит больше len байт, то уменьшает размер строки до len байт
void str_shrink(str *s, int len);
//Искать подстроку subsr в строке s. Вернуть индекс в строке или -1
int str_find(str *s, char *substr);
//Функция создаёт новую строку, которая должна содержать подстроку s, начиная с символа по индексу start_idx, и быть длины length символов (или меньше, если в строке s не хватает символов).
//Пример использования:
// str_init(&s, "hello world");
// str s2 = str_sub(&s, 6, 5);
// В s2 должна оказаться подстрока "world"
str str_sub(str *s, int start_idx, int length);
2025-09-27 03:54:38 +03:00
2025-10-03 22:58:30 +03:00
//Функция ищет в исходной строке s подстроки substr и заменяет их на replacement
//Возвращает число заменённых подстрок.
//Пример использования:
// str_init(&s, "foo bar baz foo");
// str_replace(&s, "foo", "test");
//В результате в строке &s должна получиться строка "test bar baz test",
//функция должна вернуть 2
int str_replace(str *s, char *substr, char *replacement);