Я создал 2 функции, которые находят индекс подстроки и подставляют эту подстроку в строку. Я рад, что я присяжный фальсифицировал это, учитывая, что ранее заданные вопросы никогда не отвечали/не отмечались как закрытые без какой-либо помощи. Но любые предложения по более чистым методам?Эффективно заменить подстроку в строке
void destroy_substr(int index, int len)
{
int i;
for (i = index; i < len; i++)
{
string[i] = '~';
}
}
void find_substr_index(char* substr)
{
int i;
int j;
int k;
int count;
int len = strlen(substr);
for (i = 0; i < strlen(string); i++)
{
if (string[i] == substr[0])
{
for(j = i, k = 0; k < len; j++, k++)
{
if (string[j] == substr[k])
{
count++;
}
if (count == len)
destroy_substr((j - len + 1), len);
}
j = 0;
k = 0;
count = 0;
}
}
}
Любая причина для повторного изобретения 'strstr()'? –
Я только использовал strstr() для возврата подстроки; Я не был уверен, как его реализовать, чтобы подстрока была заменена заданным символом. Как бы вы реализовали это с помощью strstr()? – rbecca
(Грубо) Найдите первый индекс подстроки в строке. найдите длину подстроки. Удостоверьтесь, что у вас достаточно места в строке, если часть, которую вы заменяете, больше, чем это (возможно, потребуется учитывать это в объявлениях или malloc/realloc соответственно), удалите подстроку. Переместите остальную часть строки так, чтобы новая подстрока входила, а затем поместила новую. Прополощите и повторите при необходимости. – Magisch