Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
75 строки
2.1 KiB
C++
75 строки
2.1 KiB
C++
#include <iostream>
|
|
#include <fstream>
|
|
#include <cstring>
|
|
#include <cctype>
|
|
|
|
using namespace std;
|
|
|
|
int main()
|
|
{
|
|
setlocale(LC_ALL, "Russian");
|
|
|
|
// Øàã 1: Çàïðîñ ó ïîëüçîâàòåëÿ èìÿ ôàéëà
|
|
char filename[256];
|
|
cout << "Ââåäèòå èìÿ ôàéëà: ";
|
|
cin.getline(filename, sizeof(filename));
|
|
|
|
// Øàã 2: Ïðîâåðêà êîððåêòíîñòè èìåíè ôàéëà
|
|
bool isValid = true;
|
|
|
|
// Ïðîâåðêà íà çàïðåùåííûå ñèìâîëû
|
|
const char* forbiddenChars = "*\"<>?|";
|
|
if (strpbrk(filename, forbiddenChars) != nullptr)
|
|
isValid = false;
|
|
|
|
// Ïðîâåðêà íà äâîåòî÷èå
|
|
if (strchr(filename, ':') != nullptr &&
|
|
(filename[1] != '\\' || !isalpha(filename[0]) ||
|
|
strchr(filename, '\\') != strrchr(filename, '\\')))
|
|
isValid = false;
|
|
|
|
// Øàã 3: Ïðîâåðêà íà ðàñøèðåíèå
|
|
const char* extension = ".txt";
|
|
if (strncmp(strrchr(filename, '.'), extension, strlen(extension)) != 0)
|
|
strcat(filename, extension);
|
|
|
|
// Øàã 4: Çàãðóçèòü ñîäåðæèìîå òåêñòîâîãî ôàéëà â ïàìÿòü
|
|
if (isValid)
|
|
{
|
|
ifstream file(filename, ios::binary | ios::ate);
|
|
if (file.is_open())
|
|
{
|
|
streampos fileSize = file.tellg();
|
|
char* buffer = new char[fileSize];
|
|
file.seekg(0, ios::beg);
|
|
file.read(buffer, fileSize);
|
|
file.close();
|
|
|
|
// Øàã 5: Çàïðîñèòü ó ïîëüçîâàòåëÿ ñòðîêó
|
|
char searchString[256];
|
|
cout << "Ââåäèòå ñòðîêó äëÿ ïîèñêà: ";
|
|
cin.getline(searchString, sizeof(searchString));
|
|
|
|
// Øàã 6: Ïîäñ÷èòàòü ÷èñëî âõîæäåíèé ñòðîêè â òåêñò ôàéë
|
|
int count = 0;
|
|
char* p = buffer;
|
|
while ((p = strstr(p, searchString)) != nullptr)
|
|
{
|
|
count++;
|
|
p += strlen(searchString);
|
|
}
|
|
|
|
cout << "×èñëî âõîæäåíèé ñòðîêè \"" << searchString << "\" â òåêñòîâîì ôàéëå: " << count << endl;
|
|
|
|
// Øàã 7: Îñâîáîäèòü âûäåëåííóþ ïàìÿòü
|
|
delete[] buffer;
|
|
}
|
|
else
|
|
cout << "Îøèáêà îòêðûòèÿ ôàéëà." << endl;
|
|
}
|
|
else
|
|
cout << "Íåêîððåêòíîå èìÿ ôàéëà." << endl;
|
|
|
|
system("pause");
|
|
return 0;
|
|
} |