Программирование >>  Элементы языков с и с++ 

1 ... 20 21 22 [ 23 ] 24 25 26 ... 200


Листинг 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

Шя продолжения нажмите любую клавишу



1 ... 20 21 22 [ 23 ] 24 25 26 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.067
При копировании материалов приветствуются ссылки.
Яндекс.Метрика