| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Замен слов в строках |
| Автор: fire64 12.10.2009, 20:49 | ||
Написал такой текст для замены слов в тексте
если длина слов одинаковая, то все нормально, если разная то возникают проблемы дело в том что производится не замена одного слова другим, а запись одного поверх другого подскажите как реализовать именно замену |
| Автор: zim22 12.10.2009, 20:58 |
на С++ есть std::string и метод replace |
| Автор: fire64 12.10.2009, 22:14 | ||
| zim22, пробовал не вышло
|
| Автор: zim22 12.10.2009, 22:27 | ||
|
| Автор: fire64 12.10.2009, 23:09 | ||
хм все равно не работает
проблема в том что ReplaceCode не возвращает false даже после замены |
| Автор: Dov 13.10.2009, 02:27 | ||
Как-то так, вроде должно быть...
|
| Автор: fire64 13.10.2009, 13:25 | ||||||
Dov, при выполнении
происходит выход из программы я думал что это из-за недостаточного выделения памяти, но увеличение tmp, до 1024*100 не приводит к изменением, а 1024*1024 приводит к падению с ошибкой п.с. разобрался сделал так
и
|
| Автор: xvr 13.10.2009, 13:50 | ||||
Проблема в том, что ReplaceCode делает этот replace в локальной переменной text и нигде больше. Переменная счастливо погибает при возврате из ReplaceCode, а вместе с ней и все результаты собственно работы самой процедуры |
| Автор: fire64 13.10.2009, 14:28 | ||||
| xvr, точно дописал после
вот только есть проблема fwrite( mapdata, strlen(mapdata), 1, wp ); добавляет в конце кучу мусора из-за mapdata = (char*) malloc (sizeof(char)*len * 2); |
| Автор: xvr 13.10.2009, 16:29 | ||
Не должно. fwrite пишет ровно столько, сколько есть в строке, а не столько, сколько было заказано через malloc. Либо в конце строки потерялся завершающий нуль (тогда strlen вернет неизвестно что), либо (если выходной файл бинарный) можно/нужно писать строку вместе с завершающим нулем (в fwrite подать strlen()+1) |