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

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

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

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

20.05.2012, 23:19. Просмотров 2431. Ответов 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();
}
Помогите найти ошибку - логическую. Программа не выдает ответ.
1
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++
Здравствуйте, как написать функцию, которая сравнивает содержимое двух дисковых файлов и выдает сообщение, если есть хотя бы одно...

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

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

Слияние двух файлов по алгоритму: цифра вставляется после двух символов - C++
#include &lt;iostream&gt; #include &lt;io.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; using...

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.05.2012, 01:29
Ответ Создать тему
Опции темы

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