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

Отображение файла в память, поиск и замена последовательности байт - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм с Паскаля на С++ http://www.cyberforum.ru/cpp-beginners/thread1215002.html
Очень прошу помощи. Никак не могу перевести с паскаля на С алгоритм. На Паскале вычисляет все отлично, все тесты проходит. На С++ заваливается через тест... x:=sekt; repeat v:=(a div k) mod n; if sekt<sekt then v:=n-v+1; if x<sekt then x:=sekt; a:=a+k; until a>=b; result = section;
C++ Каким образом переменные, описанные в одном файле, могут быть доступны другому файлу? помогите пожалуйста ответить на вопрос 1. Каким образом переменные, описанные в одном файле, могут быть доступны другому файлу? http://www.cyberforum.ru/cpp-beginners/thread1214992.html
C++ Конструктор с двоеточием
Новичок. Объясните, пожалуйста, что за параметры в конструкторе после скобочек за двоеточием? HelloWorld::HelloWorld() :_targets(NULL), _projectiles(NULL) { }
C++ Написать группу классов "мобильный телефон"
Создать класс MICROCHIP, имеющий объем памяти в Гб (v - целое). Определить конструкторы. Создать класс MOBITELEFON содержащий объект m класса MICROCHIP. Дополнительно у этого класса есть название фирмы-изготовителя (f - литерный указатель). Определить конструкторы и деструктор. Определить private-производный класс TELEFON_C_VIDEO, имеющий дополнительно размер карты памяти (k - целое). Определить...
C++ С чего начать написание программы для 3D моделирования http://www.cyberforum.ru/cpp-beginners/thread1214959.html
всем доброго времени суток=) я недавно загорелся идеей написать программку для 3D моделирования, но совсем не знаю с чего же мне начать... может есть у кого нибудь мудрый совет или интересная книжка для новичка=))) я знаю основы с++ и с# может другой какой язык посоветуете=) в общем F1 ;)
C++ Изменение текстовой строки в PE файле Здравствуйте, Хочется реализовать вот такой http://stackoverflow.com/a/7625156 способ шифрования строк: с помощью макроса добавлять в строку маркер начала и конца потом находить в уже скомпилированном файле и шифровать. В принципе, это работает, но мне не понятно что делать с метками? Вот такой пример #include "stdafx.h" #include <string> #define KEY 0x15 подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
23.06.2014, 14:27     Отображение файла в память, поиск и замена последовательности байт
Примерчик:
Кликните здесь для просмотра всего текста
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
  int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  char file_name [ ] = "Demo.txt" ;
  HANDLE hFile, hMapping; // дескрипторы файла и объекта отображения
  int *ptr; // для указателя на массив
  // открываем файл для вывода
  ofstream out(file_name, ios::out | ios::binary);
  if (!out)
  {
    cerr << "File constructor failed." << endl;
    return 0;
  }
  // выводим исходный массив в файл и на консоль
  cout << "Initial array: ";
  for (int i = 0; i < 10; ++i)
  {
    out.write((char*)&a[i], sizeof(int));
    cout << a[i] << ' ' ;
  }
  cout << endl;
  // закрываем выходной файл
  out.close();
  //
  // открываем файл для отображения в память
  hFile = CreateFile(file_name, GENERIC_READ | GENERIC_WRITE,
                    0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  if (hFile == INVALID_HANDLE_VALUE)
  {
    cerr << "Create file failed." << endl;
    return GetLastError();
  }
  // открываем объект, отображающий файл в память
  hMapping = CreateFileMapping(
                                hFile, // дескриптор открытого файла
                                NULL, // атрибуты защиты по умолчанию
                                PAGE_READWRITE, // режим доступа
                                0, 0, // размер объекта отображения равен размеру файла
                                NULL); // имя не используем
  if (!hMapping)
  {
    cerr << "Create file mapping failed." << endl;
    return GetLastError();
  }
  // создаем вид файла
  ptr = (int*)MapViewOfFile(
                            hMapping, // дескриптор объекта отображения
                            FILE_MAP_WRITE, // режим доступа к виду
                            0, 0, // отображаем файл с начала
                            0); // отображаем весь файл
  // изменяем значения элементов массива
  for (int i = 0; i < 10; ++i)
    ptr[i] += 10;
  // отменяем отображение файла в память
  if (!UnmapViewOfFile(ptr))
  {
    cerr << "Unmap view of file failed." << endl;
    return GetLastError();
  }
  // закрываем объект отображения файла в память
  if (!CloseHandle(hMapping))
  {
    cerr << "Close file failed." << endl;
    return GetLastError();
  }
  // закрываем файл
  if (!CloseHandle(hFile))
  {
    cerr << "Close file failed." << endl;
    return GetLastError();
  }
  //
  // открываем файл для ввода
  ifstream in(file_name, ios::in | ios::binary);
  if (!in)
  {
    cerr << "File constructor failed." << endl;
    return 0;
  }
  // вводим финальный массив из файла и выводим на консоль
  cout << "Final array: ";
  for (int i = 0; i < 10; ++i)
  {
    in.read((char*)&a[i], sizeof(int));
    cout << a[i] << ' ';
  }
  cout << endl;
  // закрываем входной файл
  in.close();
  return 0;
}

Стянуто у Побегайло.
 
Текущее время: 04:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru