![]() |
|
Модераторы: bsa |
![]()
|
|
| koyot |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Помогите, пожалуйста с решением задачи:
Есть 2 текстовых файла. Нужно сравнить их содержание без учета лишних пробелов, непечатных символов и регистра букв. Результат – файлы равны или не равны. Помогите с общим алгоритмом решения, если можно, также подскажите функции, осуществляющие сравнение. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
1. Считываешь оба файла в отдельные буфера. 2. Фильтруешь буфера на предмет ненужных символов(которые не учитываются при сравнении). 3. В итоге у тебя осталось два буфера, которые нужно сравнить побайтово. strcmp тебе в помощь. 1 и 2 можно совместить, т.е. считывать посимвольно и сразу решать, добавлять в буфер символ или нет. Если использовать буфферизованный поток(stdin и ф-ция getc), то разницы в производительности не будет(может быть даже лучше будет). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| koyot |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
т.е., если я правильно понял, нужно указать символы, которые при сравнении не нужно учитывать? или наоборот - указать только те, которые нужно учитывать Добавлено через 8 минут и 3 секунды А можно ли только нужные символы 1 файла занести в 1 массив, символы другого файла - в др. массив, а затем сравнить массивы? |
|||
|
||||
| archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Лучше сверять символ с набор не нужных т.к. их по идее многим меньше, чем нужных, т.е. более рационально.
Да, об этом я и говорю: -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
1: тупо читаешь посимвольно с первого файла, пропуская ненужное. Нашли нужный символ.
начинаем читать также второй файл. Нашли символ2 если символ2!=символ1 тогда return false если конец обоих файлов одновременно (в смысле значимых символов) return true; если конец одного из файлов, но не конец второго (в смысле значимых символов) return false; иначе goto1 если вернется true, то файлы одинаковые -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| koyot |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Благодарю за помощь
|
|||
|
||||
| koyot |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
2jonie:
Не подскажешь функцию, которая исключает те или иные символы либо разрешает осуществить поиск только указанных символов(диапозона символов)? Это сообщение отредактировал(а) koyot - 20.4.2008, 21:29 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
а ты if попробуй )
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| darkart |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 9.11.2005 Репутация: нет Всего: 31 |
Считаю, что 1 пробел - норма. И лучше все-таки потестить.
Это сообщение отредактировал(а) darkart - 26.4.2008, 01:11 |
||||
|
|||||
| koyot |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
darkart, спасибо огромное! Я бы таким методом никогда не додумался бы написать программу. Обязательно протестирую и напишу о результатах
|
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: нет Всего: 1 |
koyot,
видимо код рабочий....иначе ты бы не забыл написать что он не работает |
|||
|
||||
| koyot |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Тема закрыта, благодарю всех за помощь))
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
А мы так переживали всё это время. Ну... хорошо то, что хорошо кончается, расходимся.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |