KleptsovKD 3 месяцев назад
Родитель 2593caee8d
Сommit 1b13b8c24b

@ -3,6 +3,9 @@
#include <iomanip> #include <iomanip>
#include <bitset> #include <bitset>
#include <cstddef> #include <cstddef>
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std; using namespace std;
@ -104,6 +107,29 @@ struct Student {
Student* monitor; // 8 áàéò (äëÿ 64-áèòíîé ñèñòåìû) Student* monitor; // 8 áàéò (äëÿ 64-áèòíîé ñèñòåìû)
}; };
bool is_valid_filename(const char* name) {
const char* forbidden = "*\"<>?|";
for (size_t i = 0; i < strlen(name); i++) {
if (strchr(forbidden, name[i])) return false;
}
// Ïðîâåðêà äâîåòî÷èÿ
const char* colon = strchr(name, ':');
if (colon) {
if (colon - name != 1 || !isalpha(name[0]) || *(colon + 1) != '\\')
return false;
}
// Ïðîâåðêà ðàñøèðåíèÿ
const char* dot = strrchr(name, '.');
if (dot) {
if (strncasecmp(dot, ".txt", 4) != 0) return false;
}
return true;
}
int main() { int main() {
// Òåñòèðîâàíèå ÷èñåë èç ëåêöèîííîãî ñëàéäà // Òåñòèðîâàíèå ÷èñåë èç ëåêöèîííîãî ñëàéäà
uint16_t a = 0x4d2; // 1234 â äåñÿòè÷íîé uint16_t a = 0x4d2; // 1234 â äåñÿòè÷íîé
@ -185,6 +211,52 @@ int main() {
cout << endl; cout << endl;
char filename[256];
cout << "Enter file name: ";
cin.getline(filename, 256);
if (!is_valid_filename(filename)) {
cerr << "Incorrect file name!";
return 1;
}
// Äîáàâëåíèå .txt ïðè îòñóòñòâèè ðàñøèðåíèÿ
if (!strrchr(filename, '.')) {
strcat(filename, ".txt");
}
// Çàãðóçêà ôàéëà
ifstream file(filename, ios::binary | ios::ate);
if (!file) {
cerr << "Error open file!";
return 1;
}
streamsize size = file.tellg();
file.seekg(0, ios::beg);
char* buffer = new char[size + 1];
file.read(buffer, size);
buffer[size] = '\0';
// Ïîèñê ïîäñòðîêè
char query[256];
cout << "Enter line for find: ";
cin.getline(query, 256);
int count = 0;
const char* ptr = buffer;
while ((ptr = strstr(ptr, query)) != nullptr) {
count++;
ptr += strlen(query);
}
cout << "number of occurrences: " << count << endl;
delete[] buffer;
cout << endl;
char op; char op;
cout << "Enter first operand (hex): "; cout << "Enter first operand (hex): ";
@ -204,6 +276,7 @@ int main() {
return 1; return 1;
} }
// Âûâîä â hex // Âûâîä â hex
cout << "\nResult (hex): "; cout << "\nResult (hex): ";
print_in_hex(a); print_in_hex(a);

Загрузка…
Отмена
Сохранить