|
Программирование >> Элементы языков с и с++
Листинг 4.5 14.СРР : Defines the entry point for the console application, ♦include stdafx.h ♦include <stdio.h> for getchar(),putchar() ♦include <conio.h> for getchO ♦include <string.h> for strcpyO ♦define eof -1 признак конца ввода (Ctrl+z) ♦define maxline 1000 длина максимально возможной строки Следует сказать, что существуют и внутренние (или локальные) переменные (их еще называют автоматическими ). Это такие переменные, которые объявлены в теле какого-либо оператора (if, while, for, do...while) или в теле функции. Такие переменные, как говорят, локализуются в блоке объявления, т. е. известны только в самом этом блоке и не известны за его пределами. Например, можно писать: for (int i=0; i<10; i++) (какие-то операторы) 1=0; В этом случае первая переменная i известна только в цикле for, а в выражении 1=0; это будет уже другая переменная, т. к. ей компилятор присвоит совсем другой адрес. Если внешняя переменная объявлена в некотором другом файле, подключаемом с помощью оператора #include, то она должна быть объявлена и в той программе, которую мы составляем, но с атрибутом extern. Такая переменная может инициализироваться при объявлении только один раз и в месте ее основного объявления. Например, в файле Fl.h имеем: Int а=5; (объявление с инициализацией). В нашей программе мы должны выполнить #include Fl.h . ( Примечание Чтобы подключить библиотечный файл, его имя нужно указать в угловых скобках, а имя файла, созданного пользователем, заключают в двойные кавычки. к В этом случае в программе мы должны написать: extern int а; (но не extern int а=0;, поскольку никакое другое значение присвоить при этом дополнительном объявлении уже нельзя). Приведем виды программ getlineO, соруО и tmainO, которые вместо параметров используют значения внешних переменных (листинг 4.5). внешние переменные, но объявлены в этом же программном файле char line[maxline]; char save[maxline]; int max; Объявление функций /♦Формирование строки ввода с клавиатуры в line[]:возвращает длину введенной строки; lim - максимальное количество символов, которое можно ввести в строку line[] */ int getiineО 1 int c,i; extern char line[]; /♦использование глобальной переменной в функции: т. к. описание находится в этом же файле, то в функции такую переменную можно было бы не описывать. Но мы это сделгши для общего случая. */ for(i=0; i<maxline-l && (c=getchar()) != eof && с != \n; i++) line[i}=c; i++; line[i]=\0; return (i); ------------Копирование строки в строку--------------- void copy О ( extern char line[]; /* писать общий extern для нескольких объявляемых переменных нельзя*/ extern char save[]; int i=0; while((save[i]=line[ij) != SO) , i++; /*Основная программа: выбирает строку наибольшей длины из всех, вводимых с клавиатуры*/ int tmain () int len; длина текущей строки extern int max; /*здесь будет храниться длина наибольшей из 2-х сравниваемых по длине строк*/ extern char save [); max=0; printf ( Enter some strings >\n ); while ((len=get 1 ine ()) > 1) i /♦когда введем <Ctrl>+<z> или <Enter>, то длина строки станет = 1 за счет учета признака конца ЛО */ if (len > max) { inax=len; copyO ; /*когда мы нажмем комбинацию клавиш <Ctrl>+<z> или <Enter> (конец ввода), то getlineO выдаст единичную длину (с учетом символа \0) и мы попадем сюда*/ if (max > 0) была введена хоть одна строка printf( Maxs string = %s\n ,save); getch(); Результат работы программы приведен на рис. 4.3. C:\WINDOWS\system32\cmd.exe Inter sone strings > fjweas 123sd vbdrS4 Haxs string = wbdr54 Шя продолжения нажмите любую клавишу
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.067
При копировании материалов приветствуются ссылки. |