3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
|
|
1 | |
Поиск и замена текста в файле29.06.2011, 20:01. Показов 36615. Ответов 29
Метки нет (Все метки)
Добрый день. Хочу попробовать написать программу, которая будет выполнять поиск и замену заданного текста в файле.
Подскажите, пожалуйста, в какую сторону искать? Думал сделать так с последующим выполнением действий : 1. Ввод названия\пути файла. 2. Ввод искомого слова\строки. 3. Ввод того, на что заменить. Конкретные вопросы: 1. Как осуществить поиск строки? 2. Как осуществить замену? Делать буду в обычном C. Заранее благодарю
0
|
29.06.2011, 20:01 | |
Ответы с готовыми решениями:
29
Поиск и замена текста в файле Поиск и замена текста в файле Поиск и замена текста в REG-файле Поиск текста в файле и замена его на новый |
Каратель
|
|
29.06.2011, 20:09 | 2 |
http://www.cplusplus.com/refer... ng/strstr/
или разбейте текст и искомый ткст на токены и сравнивайте
1
|
29.06.2011, 20:12 | 3 |
Алгоритмов много. Можно использовать полный перебор, а можно воспользоваться приличными алгоритма вроде Кнута-Морриса-Пратта.
Читать файл в память, работать с памятью и сбрасывать в файл, осуществляя полную перезапись.
1
|
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
|
||||||
30.06.2011, 23:57 [ТС] | 4 | |||||
Попробовал, как посоветовал Maxwe11. Не работает - закрывается на моменте записи в файл.
Не мог бы кто-то проверить и подсказать?
0
|
Каратель
|
||||||
01.07.2011, 02:21 | 5 | |||||
Сообщение было отмечено как решение
Решение
результат вывожу на консоль, перезапись файла сам сделаешь
4
|
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 23
|
|
20.03.2013, 21:41 | 6 |
Jupiter, пытаюсь написать программу. Суть такая. Есть форма для заполнения. 6 EditControl и 1 ComboBox. создал кнопку для записи в файл этих данных. Но в файл заносится например вместо вводимой фамилии Иванов вот это- 0034E2F0.и так со всеми буквами. латинские, русские. цифры отображаются как надо. это проблема раз. А вторая проблема такова. Есть так же кнопка Поиск. Так вот, помогите как организовать этот поиск по этому же файлу. В первый EditControl вводится фамилия нажимаем кнопку Поиск и в другие EditControlы забиваются данные совпадающие в базе с этой фамилией, т.е. имя, отчество, и в моем случае спектакль в котором играет человек(это в ComboBox должно быть) и дальше сколько билетов было на этот спектакль. В общем прощу помощи. заранее спасибо.
0
|
3 / 3 / 0
Регистрация: 02.05.2013
Сообщений: 40
|
|
22.05.2013, 11:56 | 7 |
Кто может подсказать:
для чего это предназначено? strlen - возвращает длину stf, отнимаем -1 (получается удаляем символ конца строки?) и потом зачем то приравниваем к '\0' мы же таким образом вообще стираем все, но она работает... Тогда что тогда она делает скажите пожалуйста. Заранее спасибо.
0
|
3 / 3 / 0
Регистрация: 02.05.2013
Сообщений: 40
|
||||||
22.05.2013, 14:31 | 9 | |||||
А если использовать вместо
0
|
Антикодер
1887 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
|
||||||
22.05.2013, 14:46 | 10 | |||||
раз уж подняли тему, то в boost есть специальные методы для замены
пример моего кода(типа проверка на float, если не float заменить на float)
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
22.05.2013, 14:52 | 11 |
В смысле '\0' дописывать? Здесь нет. cin >> символ новой строки ('\n') не читает в массив, только '\0' добавляет. Но cin >> считывает до пробельного символа (считает слово), в отличие от fgets(), которая читает строку.
0
|
3 / 3 / 0
Регистрация: 02.05.2013
Сообщений: 40
|
|
22.05.2013, 15:15 | 12 |
Ага почти все понял кроме главного почему хоть и стоит там '=' он добавляет а не записывает заново всю переменную? Это особенности чего strlen?
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
22.05.2013, 15:30 | 13 | ||||||||||
Про это речь?
1
|
3 / 3 / 0
Регистрация: 02.05.2013
Сообщений: 40
|
|
22.05.2013, 15:35 | 14 |
Ааааа, голова моя содовая, все разобрался! Я просто не понял что это вообще идет как массив и рассматривал ка обычную переменную, впредь буду внимательнее спасибо большое за помощь!
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
23.03.2014, 19:25 | 16 |
1
|
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 26
|
|
23.03.2014, 19:54 | 17 |
Параноя?)
Добавлено через 19 минут А как теперь измененную строку записать в файл? пишу так fwrite(&file, sizeof(char), 1000, str); но пишет, что error C2664: fwrite: невозможно преобразовать параметр 4 из "char [255]" в "FILE *" IntelliSense: аргумент типа "char *" несовместим с параметром типа "FILE *"
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
23.03.2014, 19:56 | 18 |
1
|
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 26
|
|
23.03.2014, 20:14 | 19 |
И последний вопрос
как сделать так, чтобы в файл печаталась только измененная строка, т.е. изначальной не было, а вместо нее - измененная?
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
23.03.2014, 20:18 | 20 |
Кода не вижу.
0
|
23.03.2014, 20:18 | |
23.03.2014, 20:18 | |
Помогаю со студенческими работами здесь
20
Поиск и замена текста в файле, в содержимом которого имеются специальные символы Поиск значений в файле и замена соответствующих в другом файле Поиск части текста в диапазоне ячеек и замена этого текста на найденное соответсвие Замена текста в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |