![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.44.146] |
![]() |
|
Сообщ.
#1
,
|
|
|
Добрый день.Возникла такая проблема- есть str,slovo,zamena - вводятся с клавиатуры пользователем. Все динамические массивы.str-строка,slovo-слово которое необходимо заменить в строке,zamena-слово на которое необходимо заменить.И вывести измененную строку.Мой вариант(нашел на форуме)не работает,что не так?
![]() ![]() 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; } |
Сообщ.
#2
,
|
|
|
Во-первых, совершенно непонятно зачем вы в первой строке результата (strncpy(strResult, slovo, (int)(str - slovo))) копируете ненужный кусок в результат. slovo ж надо было найти и заменить, а вы его вовсе не забываете.
Во-вторых, str и slovo - лежат в памяти, причём могут в разных гигабайтах её!!! А значит выражение (int)(str - slovo) ну явно неправильное. ![]() |