Цель работы: изучить функции работы со строками в С++.
Задание
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 700 символов (длина строки не превышает 70 символов).
Имя файла должно иметь расширение .DAT.
Написать программу, которая :
- выводит текст на экран дисплея;
- по нажатию произвольной клавиши поочередно выделяет в тексте заданное слово (вводится с клавы);
- выводит текст на экран дисплея еще раз, удаляя из него заданное слово и лишние пробелы.
Теоретические сведения:
Строка в С++ представляется как массив символов, завершающихся символом ‘\0’.
Основные функции для работы со строками библиотеки «STRING.H»:
strcpy(char * dest,const char *source) — копирует source в dest при этом не происходит проверки на выход за границу массива символов
strcat(char *dest,const char *source) — добавляет source в dest при этом не происходит проверки на выход за границу массива символов
strupr(char *str) — преобразует строку к заглавным буквам
int strlen(char *str) — вычисляет длину строки
char *strdup(const char *str) — создаёт дубликат строки в динамической памяти
Текст программы:
Файл «LAB6.CPP»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
#include <fstream.h> #include <stdio.h> #include <process.h> #include <string.h> #include <stdlib.h> #include <conio.h> const unsigned int MAX=700;//700*71;//не более 70 символов const MAX_WORD=20; char * FileName="INPUT.DAT"; void ReadFile(ifstream & InputFile,char *buffer) { InputFile.read((char*)buffer,MAX); buffer[InputFile.gcount()-1]='\0'; } int SelectWord(char *buffer,char *word, int k,int mode) { char *s,*ls;//Для нахождения подстроки char lc; ls=buffer; s=strstr(buffer,word); int n=0; int yes=0; while (s!=NULL) { lc=s[0]; s[0]='\0'; printf(ls); if (n==k) {textcolor(GREEN);yes=1;} if (mode==0) cprintf("%s",word); n++; textcolor(LIGHTGRAY); ls=s+strlen(word); if (mode==1) { if ((ls[0]!='\0')||(ls[0]!='\n')) ls++; } s[0]=lc; s=strstr(ls,word); } printf("%s",ls); return yes; } void main() { printf("\n\nstartint lab6.\n\n"); char *buffer=new char[MAX]; char *word=new char[MAX_WORD]; char *str1=new char[100];//Для внутренних нужд if ((buffer==NULL)||(!word)||(!str1)) { printf("Не достаточно памяти\n"); exit(1); } ifstream InputFile; InputFile.open(FileName,ios::in); if (InputFile.fail()) { printf("Не удалось открыть файл \"%s\"\n",FileName); exit(1); } ReadFile(InputFile,buffer); strupr(buffer); clrscr(); printf("Вывод файла:\n"); printf("%s",buffer); /////////////////////////////// //Читаем слово с клавиатуры printf("\nВведите слово для поиска: "); scanf("%20s",word); strupr(word); printf("\n"); int k=0; clrscr(); printf("Выделяю слово:\n"); while (SelectWord(buffer,word,k,0)) { getch(); k++; clrscr(); printf("Выделяю слово:\n"); } InputFile.close(); clrscr(); printf("Тот же текст с удалённым словом:\n"); SelectWord(buffer,word,k,1); getch(); delete buffer; } |
Файл «INPUT.DAT»:
1 2 3 4 5 |
Terminator is the main robot in the Universe. He a hero of a film called Terminator Kaban is a swine atrussian. Universe is endless. Film. |
Вывод: Были изучены основные функции для работы со строками в С++.