Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > ПОМОЩЬ СТУДЕНТАМ > Замена слов в строке |
Автор: sern 03.05.20, 16:01 |
Добрый день.Возникла такая проблема- есть str,slovo,zamena - вводятся с клавиатуры пользователем. Все динамические массивы.str-строка,slovo-слово которое необходимо заменить в строке,zamena-слово на которое необходимо заменить.И вывести измененную строку.Мой вариант(нашел на форуме)не работает,что не так? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> char replaces_word(char*str, char*slovo, char*zamena) { char* strSubString = strstr(str, slovo); const int nMainLen = strlen(str); const int nSecondaryLen = strlen(slovo); const int nSubStringLen = strlen(strSubString); const int nNewLen = strlen(zamena); char* strResult = new char[nMainLen - nSecondaryLen + nNewLen + 1]; strncpy(strResult, slovo, (int)(str - slovo)); strcat(strResult, zamena); strncat(strResult, strSubString + nSecondaryLen, nMainLen - nSecondaryLen - nSubStringLen); printf(strResult); return 0; } |
Автор: Славян 03.05.20, 17:08 |
Во-первых, совершенно непонятно зачем вы в первой строке результата (strncpy(strResult, slovo, (int)(str - slovo))) копируете ненужный кусок в результат. slovo ж надо было найти и заменить, а вы его вовсе не забываете. Во-вторых, str и slovo - лежат в памяти, причём могут в разных гигабайтах её!!! А значит выражение (int)(str - slovo) ну явно неправильное. ![]() |