Files
lab0.1_letscontinue/str.h
2025-10-03 22:58:30 +03:00

63 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <stddef.h>
// Str это структура, которая хранит в памяти строки произвольной длинны
// len -- содержит текущую длину строки (0 если строка не инициализирована или нулевого размера)
// capacity содержит размер динамически инициализированного массива ptr
struct Str {
int len;
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);
//Функция копирует в строку содержимое cstr.
void str_set(str *s, char *cstr);
//Функция создаёт и возвращает новую строку, копию s
str str_copy(str *s);
// Функция возвращает количество символов 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);
//Функция ищет в исходной строке 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);