В заданной строке поменять последнее слово и слово с указанным номером - C (СИ)
Формулировка задачи:
В строке нужно поменять последнее слово и слово,номер которого указывается(если слова с таким номером нет,то строка не изменяется)
Решение задачи: «В заданной строке поменять последнее слово и слово с указанным номером»
textual
Листинг программы
char *replace(char *str, char *newWord, int number)
{
char *curWord, *newStr = calloc(sizeof(char), (strlen(str)+strlen(newWord)+1));
int count = 1;
curWord = strtok(str, " ");
while(curWord != NULL)
{
strcat(newStr, " ");
if((count++) == number)
{
strcat(newStr, newWord);
curWord = strtok(NULL, " ");
continue;
}
strcat(newStr, curWord);
curWord = strtok(NULL, " ");
}
return newStr;
}
Объяснение кода листинга программы
В данном коде реализована функция replace, которая принимает на вход три параметра:
- str - строку, в которой необходимо произвести замену.
- newWord - новое слово, которое необходимо вставить в строку.
- number - номер слова в строке, которое необходимо заменить. Список действий, которые происходят в коде:
- Выделяется память под новую строку newStr с помощью функции calloc. Размер памяти определяется как сумма длин исходной строки str и нового слова newWord, плюс один символ для пробела.
- Инициализируется переменная count, которая отслеживает количество слов в исходной строке.
- С помощью функции strtok начинается разбиение исходной строки на слова. Выделяется первое слово и добавляется в новую строку newStr.
- Добавляется пробел после первого слова.
- Проверяется условие (count == number). Если это так, то выполняется замена слова.
- Добавляется новое слово вместо слова с указанным номером.
- Продолжается цикл, пока не будут обработаны все слова в исходной строке.
- Возвращается новая строка newStr.