Прошу прощения за тупой вопрос. В крупном файле нужно найти и заменить небольшую последовательность байт. Как это делается не через ж... стандартными методами? Заранее спасибо за подробный алгоритм. WinAPI
Вот именно И куда ReadFile? Некое шестое чувство мне подсказывает, что здесь должен быть MapViewOfFile, но хоцца узнать мнение опытных товарищей.
Squash Если размеры позволяют можно отмапить весь файл в память и искать как в обычном буфере. Или в цикле читать блоками в память.
А если последовательность окажется на границе блоков? gazlan, Mikl___ Это не совсем то. Общие принципы поиска я знаю, проблема с конкретной-применительно-к винапи реализацией.
а помему не fopen, fscanf, fseek, fprintf, fclose?))))) окрываешь файл на чтение/запись, начинаешь считывать от начала блоками необходимого тебе размера, перемещая указатель от начала файла по байту за каждую итекация (но заметь, что fscanf тоже передвигает указатель, будь повнимательнее с этим), до значения (длина файла - длина блока)... если байты найдены - меняешь их... я просто не понял, а в чем проблема то?
представь себе... функции то аналогичны по своей сути... алгоритм указан... какими из них решать данную проблему - решать ТС... а в чем проблема поиска байт, я так и не понял...
Чтобы не #include <stdio.h> Всем спасибо, пришлось читать мысыдеэн самостоятельно. Файл смаплен в память целиком MapViewOfFile, сравнение байт сделано через дурацкую конструкцию типа Код (Text): if ((pFileMap[i] == 0xXX) && (pFileMap[i+1] == 0xXX) && (pFileMap[i+2] == 0xXX) && (pFileMap[i+3] == 0xXX) && ... благо последовательность невелика, как это делается по-человечески, я по-прежнему не знаю
можно сделать типа строку таких байт и сравнивать в цикле по символу... каждый раз смещая входную строку на 1 байт по файлу...