2 Commits
l3 .. l1
Author SHA1 Message Date
Суслов Роман 52899e12e6 L1 - v1.2 2023-10-22 16:22:21 +03:00
Суслов Роман b9aa0294f6 v1.1 2023-09-28 15:08:33 +03:00
10 changed files with 425 additions and 45 deletions
+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CIDR" type="CPP_MODULE" version="4" />
-1
View File
@@ -3,7 +3,6 @@
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/.idea/APD_L1.iml" filepath="$PROJECT_DIR$/.idea/APD_L1.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/APD_L1.iml" filepath="$PROJECT_DIR$/.idea/APD_L1.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/biblioteka.iml" filepath="$PROJECT_DIR$/.idea/biblioteka.iml" />
</modules> </modules>
</component> </component>
</project> </project>
+2 -8
View File
@@ -1,12 +1,6 @@
cmake_minimum_required(VERSION 3.26) cmake_minimum_required(VERSION 3.26)
project(bib C) project(untitled C)
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
add_library(biblioteka SHARED lib/library.c lib/library.h) add_executable(untitled main.c)
set_target_properties(biblioteka PROPERTIES LINKER_LANGUAGE C)
add_executable(bib main.c libBib.h)
target_link_libraries(bib biblioteka)
+1
View File
@@ -0,0 +1 @@
Hello, World!
+71
View File
@@ -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
+291 -41
View File
@@ -1,50 +1,300 @@
//
// Created by rsuslov on 23.11.2023.
//
#include <stdio.h> #include <stdio.h>
#include <windows.h> #include <windows.h>
#include "libBib.h" #include <locale.h>
// Максимальное количество IP-адресов int getLogicalDriveStrings() {
#define MAX_IP_ADDRESSES 10 printf("- GetLogicalDriveStrings:\n");
// Максимальная длина IP-адреса char buffer[4096]; // ñàì áóôåð äëÿ ñòðîêè
#define MAX_IP_ADDRESS_LENGTH 16 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(LPCSTR path) {
printf("- GetFileSize:\n");
HANDLE hFile;
unsigned long long high;
unsigned long long low;
// Îòêðûòèå ôàéëà
hFile = CreateFile(path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE) {
printf("Íå óäàëîñü îòêðûòü ôàéë\n");
CloseHandle(hFile);
return 1;
}
// Ïîëó÷åíèå ðàçìåðà ôàéëà
low = GetFileSize(hFile, (LPDWORD) &high);
// Çàêðûòèå ôàéëà
CloseHandle(hFile);
// Âûâîä ðàçìåðà ôàéëà
printf("Ðàçìåð ôàéëà: %llu\n", high << 32 | low);
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(LPCSTR path_1, LPCSTR path_2) {
printf("- CompareFileTime:\n");
FILETIME fileTime1;
FILETIME fileTime2;
// ïåðâûé ôàéë
HANDLE file1 = CreateFile(path_1,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (file1 == INVALID_HANDLE_VALUE) {
printf("Íå óäàëîñü îòêðûòü ôàéë 1\n");
CloseHandle(file1);
return 1;
}
// âðåìÿ èçìåíåíèÿ ïåðâîãî ôàéëà
GetFileTime(file1, NULL, NULL, &fileTime1);
// çàêðûâàåì ïåðâûé ôàéë
CloseHandle(file1);
// Îòêðûâàåì âòîðîé ôàéë
HANDLE file2 = CreateFile(path_2,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (file2 == INVALID_HANDLE_VALUE) {
printf("Íå óäàëîñü îòêðûòü ôàéë 2\n");
CloseHandle(file2);
return 1;
}
// Ïîëó÷àåì âðåìÿ èçìåíåíèÿ âòîðîãî ôàéëà
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("Äàòà è âðåìÿ ÄÎ èçìåíåíèÿ: %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("Äàòà è âðåìÿ ÏÎÑËÅ èçìåíåíèÿ: %02d-%02d-%d %02d:%02d:%02d\n",
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
return 0;
}
int getFileAttributes(LPCSTR path){
DWORD fileAttributes = GetFileAttributes(path);
if (fileAttributes == INVALID_FILE_ATTRIBUTES)
{
printf("Îøèáêà îòêðûòèÿ ôàéëà.\n");
return 1;
}
if (fileAttributes & FILE_ATTRIBUTE_READONLY) {
printf("\n/Read-only");
}
if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) {
printf("\n/Hidden");
}
if (fileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
printf("\n/Directory");
}// è òàê äàëåå äëÿ äðóãèõ àòðèáóòîâ ôàéëà...
printf("\n");
}
int setFileAttributes(LPCSTR path, DWORD dwFileAttributes) {
printf("- SetFileAttributes:\n");
// Góòü ê ôàéëó
// Ñáðàñûâàåì àòðèáóòû ôàéëà
SetFileAttributes(path, (DWORD) 0);
// Òåêóùèå àòðèáóòû ôàéëà
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÄÎ çàìåíû: ");
getFileAttributes(path);
// Óñòàíàâëèâàåì àòðèáóòû ôàéëà
DWORD newFileAttributes = dwFileAttributes;
BOOL result = SetFileAttributes( path, (DWORD) newFileAttributes);
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÏÎÑËÅ çàìåíû: ");
getFileAttributes(path);
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;
}
typedef char * (*NAME)();
int main() { int main() {
const HINSTANCE hinstanceDll = LoadLibrary("libbiblioteka.dll"); // динамическая загрузка библиотеки setlocale(LC_ALL, "Rus");
if (hinstanceDll == NULL){ printf("\n----------------------------\n----------------------------\n----------------------------\n");
printf("Alarme obshibka\n"); printf("\tÈíôîðìàöèÿ î äèñêàõ:\n");
return 1; // getLogicalDriveStrings();// + ïîëó÷åíèå áóêâ äèñêîâ
} // getVolumeInformation();// + ïîëó÷åíèå èíôîðìàöèè î ôàéëîâîé ñèñòåìå âûáðàííîãî ëîãè÷åñêîãî äèñêà
// получение функций из библиотеки printf("\n------------------------------------------\n");
const NAME getIpAddresses = (NAME) GetProcAddress(hinstanceDll, "getIpAddresses"); printf("\tÈíôîðìàöèÿ î ôàéëàõ è äèðåêòîðèÿõ:\n");
getFileSize("text.txt");// + ïîëó÷àåò ðàçìåð ôàéëà
if (getIpAddresses != NULL){ getFileSize("texàâïàâït.txt");// + ïîëó÷àåò ðàçìåð ôàéëà
char **ipAddresses = (char **) getIpAddresses(); // findNextFile();// + ïîèñê ñëåäóþùåãî ôàéëà â ìåñòå ïîèñêà
if (ipAddresses == NULL) { // getWindowsDirectory();// + ïóòü ê îñíîâíîìó êàòàëîãó âèíäîâñ
printf("Failed to retrieve IP addresses\n"); compareFileTime("text.txt", "text2.txt.");// + îïðåäåëåíèå êàêîé èç ôàéëîâ áîëåå íîâûé
return 1; printf("\n----------------------------\n");
} printf("\tÓïðàâëÿþùèå ôóíêöèè:\n");
// setLocalTime();// + óñòàíîâèòü òåêóùóþ äàòó è âðåìÿ
// Выводим IP-адреса printf("\tÂâåäèòå íóæíûé àòðèáóò äëÿ óñòàíîâêè ôàéëó: 1 - òîëüêî äëÿ ÷òåíèÿ, 2 - ñêðûòûé, 3 - àðõèâíûé\n");
for (int i = 0; i < MAX_IP_ADDRESSES; i++) { int chislo = 0;
printf("IP address %d: %s\n", i+1, ipAddresses[i]); scanf("%d", &chislo);
} if (chislo == 1 || chislo == 2 || chislo == 3)
setFileAttributes("text3.txt", chislo);// + óñòàíîâêà ôàéëîâûõ àòðèáóòîâ
// Освобождаем память
for (int i = 0; i < MAX_IP_ADDRESSES; i++) {
free(ipAddresses[i]);
}
free(ipAddresses);
}
else { else {
printf("Not Find function"); printf("Óêàçàí íåâåðíûé íîìåð àòðèáóòà\n");
} }
const long result_2 = factorial(4); // createFile();// + ñîçäàòü/îòêðûòü ôàéë
// CopyFile("text.txt", "text3.txt", 0);// ñêîïèðîâàòü ôàéë
printf("Result 2: %d\n", result_2);
FreeLibrary(hinstanceDll);
} }
BIN
View File
Binary file not shown.
+21
View File
@@ -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
+21
View File
@@ -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ывыфвывыавsd
+21
View File
@@ -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