#include <stdio.h>
#include <windows.h>
#define MAX_FILES 10
int main(int argc, char *argv[]) {
HANDLE file_handles[MAX_FILES];
HANDLE file_maps[MAX_FILES];
unsigned char *file_pmems[MAX_FILES];
unsigned char file_bytes[MAX_FILES];
unsigned int i, sz_file, err;
unsigned int pp = 0;
unsigned char *cur_ptr;
unsigned char lst;
if (argc-1 > MAX_FILES) {
printf("Error: MAX_FILES = 5\n");
return 1;
}
if (argc < 3) {
printf("Error: argc < 3\n");
return 1;
}
for (i = 0; i < argc-1; i++) {
file_handles = CreateFile(argv[i+1], GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
if (file_handles == 0xFFFFFFFF) {
printf("Error: CreateFile\n");
return 1;
}
}
for (i = 0; i < argc-1; i++) {
file_maps = CreateFileMapping(file_handles, 0, PAGE_READONLY, 0, 0, 0);
if (file_maps == 0) {
printf("Error: CreateFileMapping\n");
return 1;
}
}
for (i = 0; i < argc-1; i++) {
file_pmems = MapViewOfFile(file_maps, FILE_MAP_READ, 0, 0, 0);
if (file_pmems == 0) {
printf("Error: MapViewOfFile\n");
}
}
sz_file = GetFileSize(file_handles[0], 0);
while (pp < sz_file) {
for (i = 0; i < argc-1; i++) {
cur_ptr = file_pmems;
cur_ptr += pp;
file_bytes = *cur_ptr;
}
lst = file_bytes[0];
err = 0;
for (i = 1; i < argc-1; i++) {
if (file_bytes != lst) {
err = 1;
break;
}
lst = file_bytes;
}
if (err) {
printf("%X:\t", pp);
printf("%X", file_bytes[0]);
for (i = 1; i < argc-1; i++)
printf("\t%X", file_bytes);
putchar('\n');
}
++pp;
}
for (i = 0; i < argc-1; i++) {
UnmapViewOfFile(file_pmems);
CloseHandle(file_maps);
CloseHandle(file_handles);
}
return 0;
}
ошибка в программке для сравнения файлов
только не понимаю, почему не работает. программка сверяет только до адреса 0FFFh.
кому не лень разобраться, скажите, пожалуйста, в чем ошибка.. ну никак не пойму. ведь вроде все правильно сделано.
программка работает так. вызывается
fck file1 file2 file3 .. fileN
и показыавет изменения в файлах
Код:
мне кажется, что где-то тип не такой как должен быть...