Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ошибка в программке для сравнения файлов

26K
26 июня 2008 года
Belialh
18 / / 29.12.2007
Здравствуйте. написал простенькую программку для сравнения файлов.
только не понимаю, почему не работает. программка сверяет только до адреса 0FFFh.

кому не лень разобраться, скажите, пожалуйста, в чем ошибка.. ну никак не пойму. ведь вроде все правильно сделано.

программка работает так. вызывается
fck file1 file2 file3 .. fileN

и показыавет изменения в файлах

Код:
#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;
}


мне кажется, что где-то тип не такой как должен быть...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог