Я думаю, что вам нужно быть немного более точным в спецификации вашей проблемы.
Когда вы говорите, что хотите извлечь «Media», вы имеете в виду все, что находится между вторым и третьим символом «/», или в работе есть более сложная эвристика?
Кроме того, является ли строка в буфере подходящей для изменения?
Обычно для этого можно использовать strchr
или strstr
один или несколько раз, чтобы найти указатель на то место, откуда вы хотите извлечь подстроку (скажем, p
), и указатель на символ после последнего символа, который вам нужно извлечь (скажем, q
), если буфер является временным буфером, который вы не возражаете уничтожить, тогда вы можете просто сделать *q = 0
и p
будет указателем на требуемую строку , В противном случае вам нужно иметь буфер не менее q - p + 1
символов (+1
должен включать пробел для нулевого терминатора, а также q - p
интересных символов. Например, char *buffer = malloc(q - p + 1);
), и вы можете извлечь строку с помощью memcpy
. например memcpy(buffer, p, q - p + 1)
.