Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
Almaz_KG
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 105
#1

Побайтное сравнение двух файлов - C++

20.05.2012, 23:19. Просмотров 2375. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <locale.h>
#include <stdio.h>
#include <conio.h>
 
int main(int argc, char *args[])
{
    setlocale(LC_ALL, "rus");
 
    int counter  = 0;
    FILE *file1, *file2;
 
    if (argc == 3)
    {
        if ((file1 = fopen(args[1], "rb")) != NULL)
        {
            if ((file2 = fopen(args[2], "rb")) != NULL)
            {
                bool ch1, ch2;
                do
                {
                    ch1 = getc(file1);
                    ch2 = getc(file2);
                    if (ch1 != ch2)
                    {
                        counter++;
                        printf("Файлы не идентичны!!!\nНомер байта в котором они расходятся %i", counter);
                    }
                }
                while(ch1 != EOF);
                if (counter == 0)
                    printf("Два файла полностью идентичны");
            }
            else
                printf("Не удается открыть второй файл!");
        }
        else
            printf("Не удается открыть первый файл!");
    }
    else
        printf("Вы не ввели пути к файлам!");
 
    _getch();
}
Помогите найти ошибку - логическую. Программа не выдает ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2012, 23:19     Побайтное сравнение двух файлов
Посмотрите здесь:

Сравнение двух дисковых файлов - C++
Здравствуйте, как написать функцию, которая сравнивает содержимое двух дисковых файлов и выдает сообщение, если есть хотя бы одно...

Сравнение двух текстовых файлов - C++
Объясните, пожалуйста, как работает код #include&lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;conio.h&gt; #include...

Сравнение двух текстовых файлов - C++
господа есть 2 файла txt как сравнить точно ли информация в первом совпадает со вторым

Построчное сравнение двух текстовых файлов - C++
Написать программу, выполняет построчное сравнивает два текстовые файлы и выводит на консоль номера строк в которых данные файлы...

Организовать проект в виде двух заголовочных и двух программных файлов. Выполнить многофайловую компиляцию - C++
Как это зделать?(( #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; //для манипуляторов вывода ...

Сравнение файлов - C++
Привет всем ! Дано два текстовых файла. Сравнить их содержимое и в новый файл записать либо номер первой строки, в которой они...

сравнение файлов - C++
Нужно доделать программу вот по такому заданию Даны символьные файлы f и s . Записать в файл h все начальные совпадающие компоненты...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,120
20.05.2012, 23:38     Побайтное сравнение двух файлов #2
Цитата Сообщение от Almaz_KG Посмотреть сообщение
C++
1
2
3
4
bool ch1, ch2;
...
ch1 = getc(file1);
ch2 = getc(file2);
int же
Almaz_KG
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 105
20.05.2012, 23:48  [ТС]     Побайтное сравнение двух файлов #3
Спасибо=))

Я просто исходил из того, что 0-1 - это булевские значения=))
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
21.05.2012, 00:52     Побайтное сравнение двух файлов #4
Байт это восемь бит. Булевый тип в C++ = int.
Си, такой Си.
И потом, это бит есть либо нуль, либо единица. Байт может принимать значения от 0 до 255.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.05.2012, 01:04     Побайтное сравнение двух файлов #5
Цитата Сообщение от Almaz_KG Посмотреть сообщение
while(ch1 != EOF);
А если файл ch2 будет короче ch1?
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
21.05.2012, 01:07     Побайтное сравнение двух файлов #6
Тогда EOF будет на равен какому-то другому байту и сработает counter++.
Так что программа более менее корректно сработает в этом случае.
KeyGen
383 / 290 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
21.05.2012, 01:23     Побайтное сравнение двух файлов #7
AnyOne697, Совсем не обязательно. Это чревато ошибкой.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2012, 01:29     Побайтное сравнение двух файлов
Еще ссылки по теме:

Побайтовое сравнение 2 файлов - C++
Ребят , кто может написать хороший для побайтового сравнения 2 любых файлов ? Хочу посмотреть как это должно выглядеть. Заранее спасибо...

Сравнение содержимого файлов - C++
Мини-задача состоит в следующем необходимо найти в одном (А) файле содержимое второго (В). Так вот хотелось бы получить совет как...

Сравнение двух массивов - C++
Добрый день ! В условии задачи сказано, что есть два массива по 10 элементов, значения которых случайно генерируются от 0 до 30. Нужно...

Сравнение двух чисел - C++
Товарищи,не совсем понимаю как, разработать программу, осуществляющую перевод пары произвольных целых чисел из десятичной системы...

Сравнение двух списков - C++
Доброго всем времени суток. Изначальное задание было вот таким - &quot;написать программу, содержащую функцию, которая определяет, входит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
21.05.2012, 01:29     Побайтное сравнение двух файлов #8
KeyGen, не знаю. Я лично за хардкор. Автор кода на истинном пути =)
Так что либо скажите, какой ошибкой это чревато, либо...

Мне лично вообще код очень понравился. Читать приятно, всё сразу понятно, не хватает разве только египетских скобок (не готов терять лишние строчки даже будучи обладателем 27'' диагонали). И я не вижу ошибки, которая могла бы возникнуть из-за этого. Если у одного из файлов конец раньше, чем у другого, то это значит, что count++ как минимум один раз сработал! Ведь EOF != (!EOF). Логика, @&#^%$!
Yandex
Объявления
21.05.2012, 01:29     Побайтное сравнение двух файлов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru