На этом шаге мы рассмотрим текст основной программы для тестирования созданных функций.
Составим теперь основную программу для проверки работы функций getline(), substr(), copy(). Эта программа приведена ниже.
// Strings.cpp: главный файл проекта. #include "stdafx.h" #include <clocale> //обязательно для функции setlocale() #include <stdio.h> //for getchar(),putchar(),printf() #include <conio.h> //for getch() #include <stdlib.h> //for exit() #define eof -1 //признак конца ввода (Ctrl+Z) #define MAXLINE 1000 //размерность массивов (максимальная длина строк) #define FROM 2 //константа для выделения подстроки (с этого символа //будет начинаться выделение) #define HOWMANY 3 //константа для выделения подстроки (столько //символов будет выделено) using namespace System; // -----------------substr (s,n,m) ------------------------ void substr(char v[], char s[], int n, int m) { //n-й элемент находится R массиве на (п-1)-м месте int i,j; for(i=0,j=n-1;j<(n-1+m); i++, j++) v[i]=s[j]; v[i]='\0'; } // ------------------------------------------------------- int getline(char s[], int lim) { int c,i; for(i=0; i<lim-1 && (c=getchar()) != eof && c != '\n'; i++) s[i]=c; s[i]='\0'; i++; //для учета количества return i; } // ------ Копирование строки в строку ------------------- void copy(char save[],char line[]) { int i=0; while((save[i]=line[i]) != '\0') i++; } // ------------------------------------------------------- int main() { setlocale(LC_ALL,"Russian"); //функция setlocale() с аргументами //для корректного вывода кириллицы char s[MAXLINE], v[MAXLINE], w[MAXLINE]; printf("Задайте строку:\n"); int i=getline(s,MAXLINE); copy(v,s); substr(w,v,FROM,HOWMANY); if((i-1) < FROM) { printf("Длина введенной строки недостаточна для извлечения из нее"); _getch(); exit(0); } printf("Введенная строка = %s\n", s); printf("Скопированная строка = %s\n", v); printf("Подстрока = %s\n", w); _getch(); return 0; }
Смысл приведенной основной программы ясен из комментария к ней. Заметим только, что здесь встретилась новая библиотечная функция exit(), которая прерывает выполнение программы. Чтобы ее использовать, надо подключить файл stdlib.h. Так как строка символов может быть разной длины, то приходится проверять, достаточно ли в ней символов, чтобы выделить подстроку с указанием количества выделяемых символов и номера символа, с которого начнется выделение:
if((i-1) < FROM)
В выражении
if((i-1) < FROM)
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим внешние и внутренние переменные.