![]() |
|
Модераторы: bsa |
![]()
|
|
| disely |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
У меня есть 2-е кнопки. Под каждой из них я открываю файл txt. Использую VS 6, MFC. Нужно сравнить эти открытие файлы, а именно строчки. Если они одинаковы записать их в один файл, если строчки не повторялись, то записать их в др файл.
Для создания объекта и открытия файла для чтения пишу
Подскажите плиз реализацию сравнения строк. |
|||
|
||||
| bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: 2 Всего: 3 |
Тебе на до найти строки из первого файла, которых нет во втором и строки, которые есть во втором?
Если так, то можно обойтись средствами STL
Возвращает 0, если строки одинаковы Это сообщение отредактировал(а) bronislav - 27.4.2008, 23:19 -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
| warmonger_ |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.7.2007 Где: г. Киев Репутация: 1 Всего: 3 |
эта функция не имеет отношения к STL --------------------
Make everything as simple as possible, but not simpler.Albert Einstein |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Используй stl. Читаешь строки из первого файла (все) в виде string и складывешь их в set. Потом читаешь строки из второго файла (по 1й штуке), проверяешь, есть ли она в set'е (set.count(str)!=0), в зависимости от результата, выводишь ее куда надо. |
||||
|
|||||
| disely |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
а что такое stl, объясните пожалуйста
я вот не знаю как считать все строки если я не знаю заранее количество тих строк про strcmp я понял
"xvr" изменяюсь за свою тупость, с этого места можна поподробней:
Это сообщение отредактировал(а) disely - 28.4.2008, 18:46 |
||||
|
|||||
| xvr |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Библиотека такая, входит в стандарт языка С++ (в VS 6.0 имеется)
Можно:
|
||||||||
|
|||||||||
| disely |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
хорошо попробую, если что напишу.
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Не забудь сделать в начале файла
|
||||
|
|||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Есть файл, он содержит строку. Нужно сравнить с ним две имеющиеся строки, которая совпадает, вывести ответ.
Подскажите пожалуйста, почему когда во 2й раз использую переменную i для сравнения, результат не равен 0 (строка файла совпадает со 2й имеющейся строкой) ? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
потому что 2 раза fgets(c,8,f1);
второй раз считывается новая строка (а если в файле лишь одна строка, возвращается NULL)
Это сообщение отредактировал(а) baldina - 29.11.2012, 18:31 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Кроме того, fgets вернет строку с завершающим '\n'. У вас ни в одной строке, с которой вы сравниваетесь, этого '\n' нет, так что ни одна строка не совпадет
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
если у него только одна строка, то совпадет
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
если есть перевод строки, это уже не одна строка))
Добавлено через 3 минуты и 45 секунд ТС читает 8 символов (7 значащих), а сравнивает 6. поскольку число символов захардкодено, все наши измышления мимо)) |
|||
|
||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
baldinaC вашим кодом получилось, благодарю.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |