Substr C: извлечение подстроки в языке программирования C
Функция substr(c) – это стандартная функция языка программирования C/C++, которая используется для извлечения подстроки из заданной строки.
Синтаксис функции substr() выглядит следующим образом:
char *substr(char *str, int start, int len);
Здесь `str` – это строка, из которой нужно извлечь подстроку. `start` – это индекс (начиная с 0), с которого начинается извлечение подстроки, а `len` – это длина подстроки.
Например, если у нас есть строка "Hello, world!", и мы хотим извлечь подстроку "world", начиная с 7-го символа, мы можем использовать функцию substr() следующим образом:
char str[] = "Hello, world!";
char *substr = substr(str, 7, 5);
printf("%s", substr); // выведет "world"
В данном примере мы объявляем строку "Hello, world!" и вызываем функцию substr() с параметрами "str", 7 и 5. Функция вернет нам указатель на подстроку "world", который мы затем выводим на экран с помощью функции printf().
Важно отметить, что функция substr() не изменяет исходную строку, а возвращает указатель на новую подстроку. Поэтому если мы хотим сохранить исходную строку, нам нужно объявить новый указатель и присвоить ему результат работы функции substr().
Ниже приведен полный пример кода, демонстрирующий использование функции substr():
c
#include
#include
char *substr(char *str, int start, int len) {
char *substr = (char*)malloc(len + 1);
strncpy(substr, str + start, len);
substr[len] = '\0';
return substr;
}
int main() {
char str[] = "Hello, world!";
char *substr = substr(str, 7, 5);
printf("%s\n", substr); // выведет "world"
free(substr); // освобождаем память, выделенную для подстроки
return 0;
}
В данном примере мы используем функцию malloc() для выделения динамической памяти под подстроку. Затем мы копируем нужный участок исходной строки в новую строку с помощью функции strncpy() и добавляем завершающий символ \0. Наконец, мы возвращаем указатель на новую подстроку и выводим ее на экран.
Обратите внимание, что мы освобождаем память, выделенную для подстроки, с помощью функции free(), чтобы избежать утечек памяти.