Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_LEN 255
- HANDLE mapHandle = NULL;
- LPVOID mapAddr = NULL;
- void openMappingFile() {
- printf("Введите имя проекции, которую хотите открыть\n");
- char mapName[MAX_LEN];
- if (fgets(mapName, MAX_LEN, stdin)){
- fflush(stdin);
- mapName[strlen(mapName) - 1] = '\0';
- if (mapHandle)
- CloseHandle(mapHandle);
- mapHandle = OpenFileMappingA(FILE_MAP_ALL_ACCESS, TRUE, mapName);
- if (!mapHandle)
- printf("Ошибка: код ошибки %ld\n", GetLastError());
- else
- printf("Файл открыт\n");
- }
- else {
- fflush(stdin);
- printf("Ошибка при считывании ввода\n");
- }
- }
- void mapView() {
- if (mapAddr)
- UnmapViewOfFile(mapAddr);
- mapAddr = MapViewOfFile(mapHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
- if (!mapAddr)
- printf("Ошибка: код ошибки %ld\n", GetLastError());
- else
- printf("Файл успешно спроецирован по адресу %p\n", mapAddr);
- }
- void getData() {
- if (mapAddr)
- printf("Данные в текущем спроецированном файле:\n%s\n", (char *)mapAddr);
- else
- printf("Ошибка получения данных\n");
- }
- int main()
- {
- int flag = 1;
- system("chcp 65001");
- do {
- printf("Добро пожаловать! Выберите действие:\n1 - Открытие проецируемого файла\n2 - Проецирование фрагмента файла в память\n"
- "3 - Вывод данных из проецируемого файла\n4 - Выход\n");
- char c = getchar();
- fflush(stdin);
- switch (c){
- case '1':
- openMappingFile();
- break;
- case '2':
- mapView();
- break;
- case '3':
- getData();
- break;
- case '4':
- printf("Выход из программы\n");
- if (mapHandle)
- CloseHandle(mapHandle);
- if (mapAddr)
- UnmapViewOfFile(mapAddr);
- flag = 0;
- break;
- default:
- printf("Неправильный ввод, попробуйте еще раз\n");
- }
- } while (flag);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement