forked from 131/lab0.1_letscontinue
36 lines
1.4 KiB
C
36 lines
1.4 KiB
C
|
|
#pragma once
|
|||
|
|
#include <stddef.h>
|
|||
|
|
|
|||
|
|
// Str это структура, которая хранит в памяти строки произвольной длинны
|
|||
|
|
// sz -- содержит текущий размер строки (0 если строка не инициализирована или нулевого размера)
|
|||
|
|
// Размер строки -- количество байт, занятое под символы (за исключением последнего нулевого байта)
|
|||
|
|
// capacity содержит размер динамически инициализированного массива ptr
|
|||
|
|
|
|||
|
|
struct Str {
|
|||
|
|
int sz;
|
|||
|
|
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);
|
|||
|
|
|
|||
|
|
//Функция создаёт и возвращает новую строку, копию s
|
|||
|
|
str str_copy(str *s);
|
|||
|
|
|
|||
|
|
//добавляет к строке строку suffix
|
|||
|
|
void str_append(str *s, char *suffix);
|
|||
|
|
|
|||
|
|
//уменьшает размер строки до sz байт
|
|||
|
|
void str_shrink(str *s, int sz);
|