| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > В тексте заменить слова "компьютер" на "к*******р |
| Автор: AleK135 5.8.2015, 16:10 | ||
| Задача: заменить в тексте слова "компьютер" на "к*******р" Подскажите, что не правильно
|
| Автор: feodorv 5.8.2015, 18:37 | ||
При сравнении строк функцией strcmp() предполагается, что она проверяет и завершающие строки нулевые байты, иначе сравнение признаётся неудачным. Поэтому это сравнение сработает только в том случае, если строка str совпадает со строкой a. Если нужно сравнить подстроки, то пользуйтесь функцией strncmp():
Ну а здесь цикл не выполнится ни разу из-за неразумного условия e > N. И почему Вы отсчитываете от 1? В общем случае (но когда длины строк a и b совпадают) это не верно. |
| Автор: kester36 5.8.2015, 20:41 |
| вот тут уже сделали самописный str_replace() по аналогии с аналогичной функцией в php: http://2lx.ru/2010/03/str_replace-dlya-c/ Тут ещё несколько вариантов: http://www.cyberforum.ru/cpp-beginners/thread548138.html гугл полезная вещь Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/V-tekste-zamenit-slova-kompyuter-na-kr-id55c20ba5ae2015547b8b4567#findElement_E7045_55c24accae2015273d2ec170_0 |
| Автор: AleK135 5.8.2015, 21:00 | ||||
Все сделал, но все равно не изменяет текст... |
| Автор: feodorv 6.8.2015, 01:23 |
Видимо, в теле цикла никак не учитывается переменная цикла i: |
| Автор: volatile 6.8.2015, 10:25 |
В строке 23, у вас модификация шаблона поиска, вместо замены файла. Кроме того, вы изменяете только в памяти. Измененный файл, никуда не выводиться т.е. никакую замену вы не увидите. |
| Автор: xvr 6.8.2015, 13:09 |
| Для поиска подстроки в строке есть замечательная стандартная функция http://www.cplusplus.com/reference/cstring/strstr/. А для копирования - http://www.cplusplus.com/reference/cstring/memcpy/ (ну и еще http://www.cplusplus.com/reference/cstring/strlen/?kw=strlenдля вычисления длинны того, что надо копировать) |