commit b8a9376514bf5f1762d543ddcb9d31e85bdac4d1
Author: Суслов Роман <rsuslov@right-code.pro>
Date:   Thu Sep 28 14:20:33 2023 +0300

    v1

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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="CPP_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/APD_L1.iml" filepath="$PROJECT_DIR$/.idea/APD_L1.iml" />
+    </modules>
+  </component>
+</project>
\ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ 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 <stdio.h>
+#include <windows.h>
+#include <locale.h>
+
+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