Заменить одно слово на другое СИ
Нужно заменить одно слово на другое, как пример заменить слово 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);
}