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