Разработка программ обработки файлов в ОС Windows
Автор: Евгений Барышев • Декабрь 22, 2018 • Лабораторная работа • 1,712 Слов (7 Страниц) • 690 Просмотры
Липецкий государственный технический университет
Кафедра автоматизированных систем управления
ЛАБОРАТОРНАЯ РАБОТА № 1
по курсу «Операционные Системы»
Разработка программ обработки файлов в ОС Windows
Студент | Барышев Е. И. | |
Группа ПИ-16 | . | |
Руководитель | Батищев Р. В. |
Липецк 2018 г
Цель работы
Получение навыков использования функций Windows API, обеспечивающих обработку файлов.
Задание кафедры
Написать программу вставки n строк исходного файла в заданную позицию результирующего файла и последующей установки/получения атрибутов результирующего файла. Исходные данные указываются пользователем в аргументах командной строки: количество строк – в качестве второго аргумента, номера строк – в качестве третьего – [(n+3)-1]-го аргументов, далее следуют имена исходного и результирующего файлов, следующий аргумент – позиция, в которую следует вставлять строки.
[pic 1]
Листинг программы
wstring ToWString(const std::string& s) {
std::wstring temp(s.length(), L' ');
std::copy(s.begin(), s.end(), temp.begin());
return temp;
}
DWORD DefAttribute(string StrAtr) {
if (StrAtr == "A") return FILE_ATTRIBUTE_ARCHIVE;
if (StrAtr == "H") return FILE_ATTRIBUTE_HIDDEN;
if (StrAtr == "R") return FILE_ATTRIBUTE_READONLY;
if (StrAtr == "S") return FILE_ATTRIBUTE_SYSTEM;
if (StrAtr == "T") return FILE_ATTRIBUTE_TEMPORARY;
if (StrAtr == "C") return FILE_ATTRIBUTE_COMPRESSED;
if (StrAtr == "D") return FILE_ATTRIBUTE_DIRECTORY;
if (StrAtr == "NI") return FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
return 0;
}
int DefPosition(string pos) {
if (pos == "Current") return 1;
if (pos == "End") return 2;
return 0;
}
int GetAttributes(string StrAtr) {
string buffer = "";
DWORD atr = 0;
for (int i = 1; i < StrAtr.length(); i++) {
if (StrAtr[i] == '/') {
atr = atr | DefAttribute(buffer);
buffer = "";
}
else {
buffer += StrAtr[i];
}
}
if (buffer != "") atr = atr | DefAttribute(buffer);
return atr;
}
string GetStrings(string text, int* numbers, int count) {
string buffer = "";
int NumString = 1;
int ipCurrNeedStr = 0;
int CurrNeedStr = numbers[ipCurrNeedStr];
for (int i = 0; i < text.length(); i++) {
...