Сравнение двух файлов по байтно
1) Если они одинаковые - "файлы идентичны"
2) Если они не однаковые - "файлы не идентичны + номер байта в котором они различаются"
Я вроде написал, но что-то не работает, а именно ничего не выводится.
Код:
#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();
}
#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();
}
Код:
bool ch1, ch2;
Код:
char ch1, ch2;
Код:
do
{
counter++;
ch1 = getc(file1);
ch2 = getc(file2);
if (ch1 != ch2)
{
printf("Файлы не идентичны!!!\nНомер байта в котором они расходятся %i", counter);
}
}
while(ch1 != EOF);
{
counter++;
ch1 = getc(file1);
ch2 = getc(file2);
if (ch1 != ch2)
{
printf("Файлы не идентичны!!!\nНомер байта в котором они расходятся %i", counter);
}
}
while(ch1 != EOF);
Цитата: pashtet13
Ну как минимум не понятно почему у тебя
должно быть
Код:
bool ch1, ch2;
Код:
char ch1, ch2;
Спасибо - разобрался=)))
Я просто исходил из того, что мол получили бинарник файла - то бишь о переменные должны быть булевские=))))
Спасибо!!
Читай блоками в массив и сравнивай уже массивы в памяти - наааамного быстрее будет.