add new functions & tests
This commit is contained in:
41
str.h
41
str.h
@@ -2,12 +2,11 @@
|
||||
#include <stddef.h>
|
||||
|
||||
// Str это структура, которая хранит в памяти строки произвольной длинны
|
||||
// sz -- содержит текущий размер строки (0 если строка не инициализирована или нулевого размера)
|
||||
// Размер строки -- количество байт, занятое под символы (за исключением последнего нулевого байта)
|
||||
// len -- содержит текущую длину строки (0 если строка не инициализирована или нулевого размера)
|
||||
// capacity содержит размер динамически инициализированного массива ptr
|
||||
|
||||
struct Str {
|
||||
int sz;
|
||||
int len;
|
||||
int capacity;
|
||||
char *ptr;
|
||||
};
|
||||
@@ -25,11 +24,39 @@ void str_deinit(str *s);
|
||||
// Функция должна вернуть указатель на ptr
|
||||
char *str_data(str *s);
|
||||
|
||||
//Функция копирует в строку содержимое cstr.
|
||||
void str_set(str *s, char *cstr);
|
||||
|
||||
//Функция создаёт и возвращает новую строку, копию s
|
||||
str str_copy(str *s);
|
||||
|
||||
//добавляет к строке строку suffix
|
||||
void str_append(str *s, char *suffix);
|
||||
// Функция возвращает количество символов ch в строке str
|
||||
int str_count(str *s, char ch);
|
||||
|
||||
//уменьшает размер строки до sz байт
|
||||
void str_shrink(str *s, int sz);
|
||||
//добавляет к строке строку 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);
|
||||
|
||||
//Функция ищет в исходной строке 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);
|
||||
|
||||
Reference in New Issue
Block a user