From b8a9376514bf5f1762d543ddcb9d31e85bdac4d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=83=D1=81=D0=BB=D0=BE=D0=B2=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD?= Date: Thu, 28 Sep 2023 14:20:33 +0300 Subject: [PATCH] v1 --- .idea/.gitignore | 8 ++ .idea/APD_L1.iml | 8 ++ .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + CMakeLists.txt | 6 + gitignore.gitignore | 71 +++++++++++ main.c | 302 ++++++++++++++++++++++++++++++++++++++++++++ text.txt | 21 +++ text2.txt | 21 +++ text3.txt | 0 10 files changed, 451 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/APD_L1.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 CMakeLists.txt create mode 100644 gitignore.gitignore create mode 100644 main.c create mode 100644 text.txt create mode 100644 text2.txt create mode 100644 text3.txt diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/APD_L1.iml b/.idea/APD_L1.iml new file mode 100644 index 0000000..bc2cd87 --- /dev/null +++ b/.idea/APD_L1.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..5831729 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..68efe60 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.26) +project(untitled C) + +set(CMAKE_C_STANDARD 11) + +add_executable(untitled main.c) diff --git a/gitignore.gitignore b/gitignore.gitignore new file mode 100644 index 0000000..d412424 --- /dev/null +++ b/gitignore.gitignore @@ -0,0 +1,71 @@ +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf +# AWS User-specific +.idea/**/aws.xml +# Generated files +.idea/**/contentModel.xml +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml +# Gradle +.idea/**/gradle.xml +.idea/**/libraries +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr +# CMake +cmake-build-*/ +# Mongo Explorer plugin +.idea/**/mongoSettings.xml +# File-based project format +*.iws +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ +# JIRA plugin +atlassian-ide-plugin.xml +# Cursive Clojure plugin +.idea/replstate.xml +# SonarLint plugin +.idea/sonarlint/ +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties +# Editor-based Rest Client +.idea/httpRequests +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..bdeaff4 --- /dev/null +++ b/main.c @@ -0,0 +1,302 @@ +#include +#include +#include + +int getLogicalDriveStrings() { + printf("- GetLogicalDriveStrings:\n"); + char buffer[4096]; // сам буфер для строки + DWORD bufSize = sizeof(buffer) - 1; // размер буфера, в который нужно записывать строку с дисками + + GetLogicalDriveStrings(bufSize, buffer); // Получение списка логических дисков + char *drive = buffer; + while (*drive) { // перебор дисков + printf("Диск: %s\n", drive); + // следующий диск + drive += strlen(drive) + 1; + } + return 0; +} +int getVolumeInformation() { + printf("- GetVolumeInformation:\n"); + char volumeName[256]; + char fileSystemName[256]; + DWORD serialNumber; + DWORD maxComponentLength; + DWORD fileSystemFlags; + + // Получение информации о текущем диске + GetVolumeInformation("C:\\", // указатель на строку, содержащую корневой каталог тома + volumeName, // буфер, который получит имя тома + sizeof(volumeName), // длина буфера для имени тома + &serialNumber, // указатель на переменную, которая получит имя указанного тома + &maxComponentLength, // + &fileSystemFlags, // + fileSystemName, // буфер для названия файловой системы + sizeof(fileSystemName)); // размер буфера названия файловой системы + printf("Имя тома: %s\n", volumeName); + printf("Серийный номер: %lu\n", serialNumber); + printf("Max Component Length: %lu\n", maxComponentLength); + printf("Тип файловой системы: %s\n", fileSystemName); + printf("File System Flags: %lu\n", fileSystemFlags); + return 0; +} + +// --- +long getFileSize() { + printf("- GetFileSize:\n"); + HANDLE hFile; + DWORD fileSize; + unsigned long structLargeInt; + // Открытие файла + hFile = CreateFile((LPCSTR) "../text.txt", + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); + + // Получение размера файла + structLargeInt = GetFileSize(hFile, NULL); + + // Закрытие файла + CloseHandle(hFile); + + // Вывод размера файла + printf("Размер файла: %lu байт\n", structLargeInt); + return 0; +} +int findNextFile() { + printf("- FindNextFile:\n"); + WIN32_FIND_DATA findData; + HANDLE hFind; + char path[MAX_PATH]; + + // Задаем путь к директории, которую нужно просканировать + strcpy(path, "..\\*"); + + // Начинаем поиск первого файла/папки в директории + hFind = FindFirstFile(path, &findData); + + // Перебираем все файлы и папки в директории + do { + if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + printf("Папка: %s\n", findData.cFileName); + } else { + printf("\tФайл: %s\n", findData.cFileName); + } + } while (FindNextFile(hFind, &findData)); + + // Закрытие дескриптора поиска + FindClose(hFind); + + return 0; +} +int getWindowsDirectory() { + printf("- GetWindowsDirectory:\n"); + char windowsDir[255]; // сюда запишутся символы пути + + GetWindowsDirectory(windowsDir, sizeof(windowsDir)); + + printf("Виндосв папка тут: %s\n", windowsDir); + return 0; +} +int compareFileTime() { + printf("- CompareFileTime:\n"); + FILETIME fileTime1; + FILETIME fileTime2; + + // первый файл + HANDLE file1 = CreateFile((LPCSTR) "../text.txt", + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); + + // время изменения первого файла + GetFileTime(file1, NULL, NULL, &fileTime1); + + // закрываем первый файл + CloseHandle(file1); + + // Открываем второй файл + HANDLE file2 = CreateFile((LPCSTR) "../text2.txt", + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); + // Получаем время изменения второго файла + GetFileTime(file2, NULL, NULL, &fileTime2); + + // Закрываем второй файл + CloseHandle(file2); + + // Сравниваем время изменения файлов + int comparisonResult = CompareFileTime(&fileTime1, &fileTime2); + + if (comparisonResult == 1) { + printf("Файл 1 был изменен раньше файла 2\n"); + } else if (comparisonResult == -1) { + printf("Файл 2 был изменен раньше файла 1\n"); + } else { + printf("Время изменения файлов одинаково\n"); + } + + return 0; +} + +// --- +int setLocalTime() { + printf("- SetLocalTime:\n"); + // Создание структуры SYSTEMTIME для установки времени + SYSTEMTIME systemTime; + + // Заполнение структуры SYSTEMTIME данными текущего времени + GetLocalTime(&systemTime); + printf("\nДата и время ДО изменения: %02d-%02d-%d %02d:%02d:%02d\n", + systemTime.wDay, systemTime.wMonth, systemTime.wYear, + systemTime.wHour, systemTime.wMinute, systemTime.wSecond); + + // Увеличение часового значения на 1 + if (systemTime.wHour < 23) { + systemTime.wHour++; + } else { + systemTime.wHour = 0; + } + + // Установка нового времени с использованием SetLocalTime + SetLocalTime(&systemTime); + printf("Время успешно изменено\n"); + + printf("\nДата и время ПОСЛЕ изменения: %02d-%02d-%d %02d:%02d:%02d\n", + systemTime.wDay, systemTime.wMonth, systemTime.wYear, + systemTime.wHour, systemTime.wMinute, systemTime.wSecond); + + return 0; +} +int setFileAttributes() { + + printf("- SetFileAttributes:\n"); +// Gуть к файлу + LPCWSTR filePath = L"..\\text3.txt"; + // Сбрасываем атрибуты файла + SetFileAttributes((LPCSTR) filePath, (DWORD) NULL); + // Текущие атрибуты файла + DWORD fileAttributes = GetFileAttributes((LPCSTR) filePath); + printf("\tТекущие атрибуты файла ДО замены: "); + if (fileAttributes & FILE_ATTRIBUTE_READONLY) { + printf("\n- Read-only"); + } + if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) { + printf("\n- Hidden"); + } + if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + printf("\n- Directory"); + }// и так далее для других атрибутов файла... + printf("\n"); + + // Устанавливаем атрибуты файла + DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY |fileAttributes; + BOOL result = SetFileAttributes((LPCSTR) filePath, (DWORD) newFileAttributes); + + fileAttributes = GetFileAttributes((LPCSTR) filePath); + + printf("\tТекущие атрибуты файла ПОСЛЕ замены: "); + if (fileAttributes & FILE_ATTRIBUTE_READONLY) { + printf("\n- Read-only"); + } + if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) { + printf("\n- Hidden"); + } + if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + printf("\n- Directory"); + }// и так далее для других атрибутов файла... + printf("\n"); + + return 0; +} +int createFile() { + printf("- CreateFile:\n"); + HANDLE hFile; + char* fileName = "example.txt"; + + // Создание файла + hFile = CreateFile(fileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + + // Запись в файл + char* data = "Hello, World!"; + DWORD bytesWritten; + WriteFile(hFile, data, strlen(data), &bytesWritten, NULL); + + // Закрытие файла + CloseHandle(hFile); + + // Повторное открытие файла + hFile = CreateFile(fileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + // Чтение из файла + const int bufferSize = 100; + char buffer[bufferSize]; + DWORD bytesRead; + if (!ReadFile(hFile, buffer, bufferSize, &bytesRead, NULL)) + { + printf("Failed to read from file.\n"); + CloseHandle(hFile); + return 1; + } + + // Вывод содержимого файла + printf("Содержимое файла: %.*s\n", bytesRead, buffer); + + // Закрытие файла + CloseHandle(hFile); + + return 0; +} +void copyFile(const char* sourceFile, const char* destinationFile) { + printf("- CopyFile:\n"); + + FILE* source = fopen(sourceFile, "rb"); + FILE* destination = fopen(destinationFile, "wb"); + + // Копируем содержимое файла + char buffer[1024]; + size_t bytesRead; + while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) { + fwrite(buffer, 1, bytesRead, destination); + } + + // Закрываем файлы + fclose(source); + fclose(destination); + + printf("Файл успешно скопирован.\n"); +} + + + +int main() { + setlocale(LC_ALL, "Rus"); + printf("\n----------------------------\n"); + printf("\tИнформация о дисках:\n"); + // getLogicalDriveStrings();// + получение букв дисков + // getVolumeInformation();// + получение информации о файловой системе выбранного логического диска + printf("\n------------------------------------------\n"); + printf("\tИнформация о файлах и директориях:\n"); + // getFileSize();// + получает размер файла + // findNextFile();// + поиск следующего файла в месте поиска + // getWindowsDirectory();// + путь к основному каталогу виндовс + // compareFileTime();// + определение какой из файлов более новый + printf("\n----------------------------\n"); + printf("\tУправляющие функции:\n"); + // setLocalTime();// + установить текущую дату и время + // setFileAttributes();// + установка файловых атрибутов + // createFile();// создать/открыть файл + const char* sourceFile = ".//text.txt"; + const char* destinationFile = ".//text33.txt"; + CopyFile(".//text.txt", ".//text3.txt", 0);// скопировать файл +} diff --git a/text.txt b/text.txt new file mode 100644 index 0000000..6461503 --- /dev/null +++ b/text.txt @@ -0,0 +1,21 @@ +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan + +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsanss +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +text.txttext.txttext.txt + +text.txttext.txttext.txttext.txtsss +text.txttext.txttext.txttext.txt + + +text.txttext.txttext.txt +text.txtss +text.txt +text.txt +text.txt +text.txttexttext.txtss \ No newline at end of file diff --git a/text2.txt b/text2.txt new file mode 100644 index 0000000..51762f3 --- /dev/null +++ b/text2.txt @@ -0,0 +1,21 @@ +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan + +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsanss +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan +text.txttext.txttext.txt + +text.txttext.txttext.txttext.txt +text.txttext.txttext.txttext.txt + + +text.txttext.txttext.txt +text.txt +text.txt +text.txt +text.txt +text.txttexttext.txtывыфвывыав \ No newline at end of file diff --git a/text3.txt b/text3.txt new file mode 100644 index 0000000..e69de29