- Библиотека должна разработана на языке Си стандарта C11 с использованием компилятора gcc
- При написании кода придерживались Google Style
- Решение оформлено как статическая библиотека, с заголовочным файлом s21_string.h
- Библиотека должна разработана в соответствии с принципами структурного программирования
- У проекта полное покрытие unit-тестами функций библиотеки c помощью библиотеки Check. Unit-тесты проверяют результаты работы реализации путём ее сравнения с реализацией стандартной библиотеки string.h. Unit-тесты покрывают не менее 80% каждой функции.
- Предусмотрен Makefile для сборки библиотеки и тестов (с целями all, clean, test, s21_string.a, gcov_report)
- В цели gcov_report формируется отчёт gcov в виде html страницы
- Соблюдена логика работы стандартной библиотеки string.h
- Функции работают с z-строками из однобайтовых символов в кодировке ASCII.
- Функция быть размещена в библиотеке s21_string.h.
- Поддерживается частичное форматирование:
- Спецификаторы: c, d, f, s, u, %
- Флаги: -, +, (пробел)
- Ширина: (число)
- Точность: .(число)
- Длина: h, l
№ | Переменная | Описание |
---|---|---|
1 | size_t | Целочисленный тип без знака, являющийся результатом ключевого слова sizeof. |
№ | Макрос | Описание |
---|---|---|
1 | NULL | Макрос, являющийся значением константы нулевого указателя. |
№ | Функция | Описание |
---|---|---|
1 | void *memchr(const void *str, int c, size_t n) | Выполняет поиск первого вхождения символа c (беззнаковый тип) в первых n байтах строки, на которую указывает аргумент str. |
2 | int memcmp(const void *str1, const void *str2, size_t n) | Сравнивает первые n байтов str1 и str2. |
3 | void *memcpy(void *dest, const void *src, size_t n) | Копирует n символов из src в dest. |
4 | void *memset(void *str, int c, size_t n) | Копирует символ c (беззнаковый тип) в первые n символов строки, на которую указывает аргумент str. |
5 | char *strncat(char *dest, const char *src, size_t n) | Добавляет строку, на которую указывает src, в конец строки, на которую указывает dest, длиной до n символов. |
6 | char *strchr(const char *str, int c) | Выполняет поиск первого вхождения символа c (беззнаковый тип) в строке, на которую указывает аргумент str. |
7 | int strncmp(const char *str1, const char *str2, size_t n) | Сравнивает не более первых n байтов str1 и str2. |
8 | char *strncpy(char *dest, const char *src, size_t n) | Копирует до n символов из строки, на которую указывает src, в dest. |
9 | size_t strcspn(const char *str1, const char *str2) | Вычисляет длину начального сегмента str1, который полностью состоит из символов, не входящих в str2. |
10 | char *strerror(int errnum) | Выполняет поиск во внутреннем массиве номера ошибки errnum и возвращает указатель на строку с сообщением об ошибке. Нужно объявить макросы, содержащие массивы сообщений об ошибке для операционных систем mac и linux. Описания ошибок есть в оригинальной библиотеке. Проверка текущей ОС осуществляется с помощью директив. |
11 | size_t strlen(const char *str) | Вычисляет длину строки str, не включая завершающий нулевой символ. |
12 | char *strpbrk(const char *str1, const char *str2) | Находит первый символ в строке str1, который соответствует любому символу, указанному в str2. |
13 | char *strrchr(const char *str, int c) | Выполняет поиск последнего вхождения символа c (беззнаковый тип) в строке, на которую указывает аргумент str. |
14 | char *strstr(const char *haystack, const char *needle) | Находит первое вхождение всей строки needle (не включая завершающий нулевой символ), которая появляется в строке haystack. |
15 | char *strtok(char *str, const char *delim) | Разбивает строку str на ряд токенов, разделенных delim. |
№ | Спецификатор | Результат sprintf | Результат sscanf |
---|---|---|---|
1 | c | Символ | Символ |
2 | d | Знаковое десятичное целое число | Знаковое десятичное целое число |
3 | f | Десятичное число с плавающей точкой | Десятичное число с плавающей точкой или научная нотация (мантисса/экспонента) |
4 | s | Строка символов | Строка символов |
5 | u | Беззнаковое десятичное целое число | Беззнаковое десятичное целое число |
6 | % | Символ % | Символ % |
№ | Флаг | Описание |
---|---|---|
1 | - | Выравнивание по левому краю в пределах заданной ширины поля. Выравнивание по правому краю используется по умолчанию (см. подспецификатор ширины). |
2 | + | Заставляет явно указывать знак плюс или минус (+ или -) даже для положительных чисел. По умолчанию только отрицательным числам предшествует знак "-". |
3 | (пробел) | Если знак не будет выведен, перед значением вставляется пробел. |
№ | Длина | Описание |
---|---|---|
1 | h | Аргумент интерпретируется как короткое int или короткое int без знака (применяется только к целочисленным спецификаторам: i, d, o, u, x и X). |
2 | l | Аргумент интерпретируется как длинное int или длинное int без знака для целочисленных спецификаторов (i, d, o, u, x и X) и как широкий символ или строка широких символов для спецификаторов c и s. |