0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 16
|
|
1 | |
Сравнить содержимое файлов между собой, и если оно совпадает, то вывести на экран имена этих файлов17.09.2014, 18:28. Показов 3407. Ответов 15
Метки нет Все метки)
(
Прошу помощи у знающих людей.
Существует 2 массива, содержащих названия файлов.Требуется сравнить содержимое файлов между собой, и если оно совпадает,то вывести на экран имена этих файлов. Понимаю,что я чайник. Сжальтесь
0
|
|
17.09.2014, 18:28 | |
Ответы с готовыми решениями:
15
Сравнить содержимое этих файлов и записать в файл H все совподающие компоненты файлов F G Ввести с клавиатуры расширение файлов; если они существуют, вывести атрибуты этих файлов иначе соотв. сообщение Переименование PDF-файлов в имена, берущиеся из содержимого этих файлов В определенной директории, прочитать все имена файлов и создать папки, с названиями этих файлов |
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
17.09.2014, 18:35 | 2 |
1. открываем оба файла на чтение
2. читаем некоторый блок фиксированного размера из каждого файла 3. сравниваем блоки каким-нибудь memcmp() 4. если блоки разные, то выходим. Если одинаковые, то проверяем, что ещё есть данные и переходим к п.2 сместив позицию чтения. 5. если данных больше нет в одном из файлов, то они разные. 0. Можно сразу выкинуть из сравнения файлы с разными размерами. Начинайте писать программу. Что не ясно - спрашивайте.
0
|
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
17.09.2014, 22:06 | 3 | |||||
0
|
Tulosba
|
17.09.2014, 22:24
#4
|
Не по теме: alsav22, посимвольное чтение о-о-о-очень не эффективно.
0
|
alsav22
|
17.09.2014, 22:39
#5
|
0
|
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 16
|
|
18.09.2014, 02:02 [ТС] | 6 |
В каждом массиве по 3-4 файла
0
|
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
18.09.2014, 03:09 | 7 | |||||
Перебирайте массивы, сравнивайте. Сравнивать всё равно два будете.
Добавлено через 1 час 4 минуты
0
|
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
20.09.2014, 08:34 | 9 | ||||||||||
Не по теме: Сектор - это сколько? Когда-то сравнивал скорость разных методов и способов чтения из файла (в том числе и блоками). Помню, что самое быстрое получилось чтение Си-функциями, release, в бинарном режиме, строками (fgets()). Но, насколько помню, размер блока под сектор не подгонял. Можно проверить. Добавлено через 14 часов 28 минут Не по теме: Посмотрел код, которым я раньше сравнивал скорости. Там несколько другое было: чтение из одного файла и запись в другой, и блок выделялся под размер всего файла. Получалось, что через использование построчных функций, немного быстрее работало. Попробовал блоками - намного быстрее, а вот то, что наибольшую скорость даёт размер блока, равный сектору (512 байт), не подтвердилось. Файл 47мгб, блоками по 50кб и больше, получается быстрее обработать, чем более мелкими блоками (в том числе и по 512 байт). Добавлено через 14 часов 52 минуты Тогда так (работает довольно быстро): Кликните здесь для просмотра всего текста
Добавлено через 1 час 3 минуты Блоками ещё быстрее: Кликните здесь для просмотра всего текста
1
|
|
20.09.2014, 08:46
#10
|
0
|
Модератор
![]() 8782 / 6568 / 891
Регистрация: 14.02.2011
Сообщений: 23,069
|
|
20.09.2014, 09:17 | 11 |
а там нужен размер не сектора а клястера, зависит от ФС,как кстати и сектор,в клястере могут быть несколько секторов
Добавлено через 7 минут я как то делал поиск дубль файлов не закончил, неинтересно стало ![]() так что насчет эффективности не скажу делал так 1 сравнивал размеры, если не равны выходим, хотя тут есть засада, текстовый файл с пробелом в конце, или с переводом строки,с точки зрения машины разные файлы, с точки зрения человека одинаковые ![]() 2 считывал 4 байта(инт) и сравнивал, сигнатура файла обычно лежит сначала, если не равны выходим 3 проецировал в память оба файла и сравнивал memcmp
1
|
![]() 3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
20.09.2014, 09:59 | 13 | |||||
0
|
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
20.09.2014, 22:44 | 14 | ||||||||||
Про скорость молчу. Если сделать все файлы в массивах одинаковыми?
Добавлено через 1 час 25 минут Во втором коде, в 9 посте, неправильно деление на блоки написал. И перенести, задание размера блока, в первый цикл. У меня, наибольшая скорость (при файлах в 47мгб), получается при размере блока в 128кб. Кликните здесь для просмотра всего текста
Добавлено через 8 минут Полное сравнение шести файлов (3 х 3), размером по 47 888 896 байт, за 0.42сек (release, оптимизация - максимальная скорость).
0
|
![]() 3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
21.09.2014, 00:22 | 15 | |||||
Ну, если двойников возможно несколько, то вот так:
Кликните здесь для просмотра всего текста
Добавлено через 1 минуту Да я, признаться, за ней и не гнался. Но файлы размером в десятки мегабайт шустренько обрабатывает. Добавлено через 2 минуты Так це ж на Си!
0
|
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
21.09.2014, 05:18 | 16 | |||||
Тут же разговор об эффективности зашёл.
Те же файлы (без создания в коде), с вашим кодом - 18.6 сек. Добавлено через 54 секунды Так це ж специально! ![]() Добавлено через 4 часа 13 минут С мапированием - 0.26сек.: Кликните здесь для просмотра всего текста
0
|
21.09.2014, 05:18 | |
Помогаю со студенческими работами здесь
16
Найти среднее значение массивов и сравнить их между собой. Вывести на экран большее из них Найти среднее значение массивов А[1..5], B[1..5] и сравнить их между собой. Вывести на экран большие из них Найти среднее значение массивов А[1..5], B[1..5] и сравнить их между собой. Вывести на экран большие из них Сравнить содержимое двух файлов и совпадающую информацию вывести в третий файл Командой find вывести содержимое файлов, имена которых не начинаются и не заканчиваются на заданый символ Вывести позиции символов из двух файлов, различающихся между собой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |