Массивы символов.

Массивы символов и массивы строк удобно использовать, когда количество символов в обрабатываемой последовательности более 255. Максимальное количество символов в массивах символов и строк не должно превышать 216 . Для массивов строк должно выполняться условие M * (N+1) < 216 , где M - количество элементов в строковом массиве; N - размер строки.

Правила.

Массиву символов можно сразу присвоить значение строковой константы, если длина константы равна длине массива. Например

Var MS, Mt : Array [1..6] Of Char;

. . . . . . . . .

Ms := '123456'; .

Если символьные массивы одного типа, то можно применять операцию присваивания, например

Ms := Mt;

 

4.15.6. Обработка символьных данных.

1.Обработка проводится в соответствии с алгоритмом. Например, если надо определить класс символа (цифра это или буква) то условный оператор можно записать так

If ( Ms[k] >= '0' ) And ( Ms[k] <='9') Tnen . . . .

2.Ввод и вывод. Для строковых достаточно прость указать имя

Var St: String[10];

. . . . . . .Read ( St );

Write ( St ) ; {нельзя Read[St[k]}.

При вводе символьных массивов можно использовать следующие варианты:

- ввод заданного количества символов

For K := 1 To N Do Read (Ms[k]);

- ввод до специального признака

Const Pk = ' # ';

K := 1 ; Repeat

Read ( Ms[k] ) ; K := K+1;

Until Ms[k-1] = Pk ;

- ввод до признака конца строки, например так

- K := 1;

- While Not Eoln Do Begin

Read (Ms[K]); K := K+1;

End; {это ввод с клавиатуры}

Этот вариант работает, выход по признаку EOLN. Если сделать EOF , то если на строке набрать АВС , то в массиве будет АВС#13#10 и далее снова ожидает ввода. Если сделать Not Eoln, то работает нормально, причем если длина массива меньше, чем количество введенных символов, то цикл продолжается пока не достигнет конца строки. (возможно, что был отключен контроль массива и поэтому продолжает вводить в область после массива - уточнить).