Заменить одно слово на другое СИ

Нужно заменить одно слово на другое, как пример заменить слово del на Insert. Что-то попытался написать, но меняется только 3 символ слова "del" на пятый символ слова "Insert" Стандартные функции не могу использовать, только обычная работа с массивом.

{
setlocale(LC_ALL, "RU");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s[] = "delete - нажмите клавишу deldel", a[] = "del", b[] = "Insert";
char s2[60]; // итоговая строка
int i, j, k;
for (i = 0; s[i] != '\0'; i++)
    for (j = 0; a[j] != '\0'; j++)
        for (k = 0; b[k] != '\0'; k++)
        if (s[i] == a[j])
        {
            s2[i] = b[k];
        }
        else (s2[i] = s[i]);
puts(s2);
                

}


Ответы (1 шт):

Автор решения: Harry

Так устроит?...

int len(const char * s)
{
    int i = 0;
    while(s[i++]);
    return i-1;
}

int is_a(const char * s, const char * a)
{
    for(int i = 0; i < len(a); ++i)
        if (s[i] != a[i]) return 0;
    return 1;
}

int main(int argc, const char * argv[])
{
    char s[] = "delete - нажмите клавишу deldel", a[] = "del", b[] = "Insert";
    char s2[60]; // итоговая строка

    for(int i = 0; i < sizeof(s2); ++i) s2[i] = 0;

    for(int i = 0, j = 0; s[i];)
    {
        if (is_a(s+i,a))
        {
            for(int k = 0; k < len(b); ++k)
                s2[j++] = b[k];
            i += len(a);
        }
        else
        {
            s2[j++] = s[i++];
        }
    }

    printf("%s\n",s2);

}
→ Ссылка