Министерство Образования и науки Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет Бизнеса
Кафедра Экономической информатики
РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА
По теме: "РЕАЛИЗАЦИЯ КОМАНДЫ FIND MS-DOS НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ C++"
Вариант - 14
Группа: ФБИ-
Студент:
Преподаватель: Сваровский С. Г.
Новосибирск
2007
Содержание:
Задание ……………………………………………………………………… 3
Алгоритм и блок-схема …………………………………………………….. 3
Текст программы на языке C++ …………………………………………… 6
ЗАДАНИЕ:
Реализовать на языке программирования команду FIND, которая производит поиск текстовой строки в одном или нескольких файлах.
АЛГОРИТМ и БЛОК-СХЕМА ИСПОЛЬЗУЕМОГО АЛГОРИТМА:
В программном коде используются два ключа для команды MYFIND /V и /C. /V – вывод всех строк не содержащих заданную строку, /C – вывод только общего числа строк, содержащих заданную строку.
БЛОК-СХЕМА:
|
||||||
ТЕКСТ ПРОГРАММЫ НА C++:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
FILE *myfile;
char str[255],from[255],key[10];
#pragma argsused
int main(int argc, char* argv[]) //argc - количество параметров, argv[i] - i-ый параметр
{
strcpy(str,"\0"); // обнуление строк
strcpy(from,"\0"); //обнуление строк
strcpy(key,"\0"); //обнуление строк
strcpy(key,argv[1]); // в переменную key заносим первый параметр
if (key[1]=='?'){
printf("Poisk tekstovoj stroki v fajle\n\n");
printf("myfind [/V] [/C] \"stroka\" [[disk:][pyt]imja_fajla]\n\n");
printf("/V Vivod vseh strok, NE soderjashih zadannuu stroku\n");
printf("/C Vivod obshego chisla strok, soderjashih zadannuu stroku\n");
printf("\"stroka\" iskomaja stroka\n");
printf("[disk:][pyt]imja_fajla\n");
return 0; } //выход
if ((key[1]=='V'||key[1]=='v')&&(key[2]=='\0')){
strcpy(str,argv[2]);
if(myfile=fopen(argv[3],"r")){ // проверка на существование файла
myfile=fopen(argv[3],"r"); //открытие на чтение
while (!feof(myfile)){
fgets(from,254,myfile); //построчное считывание
if(!strstr(from,str))printf(from); //если данной строки нету то выводим эту строку
}
} else printf("file %s not found",argv[3]);
return 0;
}
if ((key[1]=='C'||key[1]=='c')&&(key[2]=='\0')){
strcpy(str,argv[2]);
if(myfile=fopen(argv[3],"r")){
myfile=fopen(argv[3],"r");
int i=0; // вводим новую переменную целочисленную
while (!feof(myfile)){
fgets(from,254,myfile);
if(strstr(from,str))i++; // Если заданная строка содержится то увеличиваем переменную i на еденицу
}
printf("%i",i); // выводит количество строк содержащих заданную
}else printf("file %s not found",argv[3]);
return 0;
}else{
strcpy(str,argv[1]);
if(myfile=fopen(argv[2],"r")){
myfile=fopen(argv[2],"r");
while (!feof(myfile)){
fgets(from,254,myfile);
if(strstr(from,str))printf(from);
} }else printf("file %s not found",argv[2]);
}
return 0;
}
//---------------------------------------------------------------------------
ТЕСТИРОВАНИЕ ПРОГРАММЫ:
Создадим в той же папке тестовый файл GRET.TXT с которым будет работать команда MYFIND.
Содержимое файла GRET.TXT:
Запускаем режим MS-DOS указывая в нем путь где лежит наша программа (файлы MYFIND.CPP и MYFIND.EXE)
1. Тестирование HELPA по программе (ключ [/?]):
2. Тестирование команды без ключей:
3. Тестирование команды если заданного файла не существует:
4. Тестирование команды – вывод всех строк, не содержащих заданную строку (ключ /V):
5. Тестирование команды – вывод общего числа строк содержащих заданную строку (ключ /C):
Вывод:
Реализовали команду MS-DOS FIND на языке программирования C++ с рабочим именем MYFIND. В процессе создания программы также учитывалось и возможность использования справки по данной команде и двух ключей (/V и /C). С задачей справился в полной мере. Программа тестировалась под Win98 и WinXP.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.