Стандартная библиотека
C не предоставляет функции регулярных выражений.Однако, поскольку ваш пример ищет фиксированную строку, вам не нужно регулярное выражение.Поиск подстроки достаточно.Это можно сделать с помощью функции strstr :
#include <string.h>
..........
char* text = "bla bla &JOY bla bla &JOY blabla";
char* pattern = "&JOY";
char* substr_ptr;
int pos;
while ( substr_ptr = strstr(pattern, text) )
{
pos = substr_ptr - text;
printf("found at %d\n", pos);
}
Что касается вашего второго вопроса - нет, такой функции нет.Вы должны сделать это вручную:
- , если замещающая строка имеет ту же длину, что и подстрока, которую вы хотите заменить, просто перезапишите ее на месте ( memcpy );
- в противном случае вам придется выделить память для результирующей строки и скопировать туда три части (исходную строку до появления подстроки, замену строки и оставшуюся часть исходной строки).