Перевести страницу

Создание приложений для науки и производства ещё не было таким простым

Операции для работы со строками

Набор операций для работы со строчными переменными для поддержки типа данных str. Операции следят за допустимостью выполняемых действий, но большинство из них не прерывает выполнение программы. Если производится удлинение строки каким-либо способом, и результат получается длиннее буфера, то строка автоматически обрезается до длины буфера. Гарантируется правильное выполнение строчных операций только с символами ANSI, состоящими из 1 байта. UNICODE не поддерживается. Русские буквы кодируются в кодировке Windows-cp1251.


concat

Формат вызова:

    (concat <parameter0> <parameter1> [<parameter2>...<parameter31>])

возвращает строку, принимает переменное число параметров от 2 до максимального допустимого;

первый параметр строка, допустим любой операнд, массив не допустим;

второй параметр строка, допустим любой операнд, массив не допустим;

параметры с третьего по последний такие же, как предыдущий;

назначение операции: выполняет конкатенацию (слияние) строк, полученных параметрами, возвращает результат конкатенации, пример использования:

    b = 1001.3;

    str a = (concat “значение переменной b равно ” b);

в результате переменная a будет содержать строку “значение переменной b равно 1.0013E3”.


length

Формат вызова:

    (length <parameter0>)

возвращает беззнаковое целое, принимает один параметр;

параметр типа строка, допустим любой операнд, массив не допустим;

назначение операции: вычисляет и возвращает длину строки, полученной параметром, возвращается число байт без учета завершающего ноля, но если в середине строки встречается нулевой байт, он тоже учитывается в общей длине, пример использования:

    b = (length “длина этой строки равна 26”);

переменной b будет присвоено значение 26;

    puts (length “”);

напечатает 0.


substr

Формат вызова:

    (substr <parameter0> <parameter1> [<parameter3>])

возвращает строку, число параметров переменное от 2 до 3;

первый параметр типа строка, допустим любой операнд, массив не допустим;

второй параметр беззнаковое целое, допустим любой операнд, массив не допустим;

третий параметр беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: возвращает часть строки, полученной первым параметром (подстроку), второй параметр задает номер символа, начиная с которого извлекается подстрока, если третий параметр опущен, то извлекается только один символ, если третий параметр указан, то он задает длину подстроки, которая будет извлечена, если же результат переходит через границу исходной строки, то извлечение прекращается, байты нумеруются, как элементы массива, начиная с нулевого, пример использования:

    puts (subs “abcdefijklmnop” 3 4);

напечатает

    defi


char

Формат вызова:

    (char <parameter0> <parameter1>)

возвращает беззнаковое целое, принимает 2 параметра;

первый параметр типа строка, допустим любой операнд, массив не допустим;

второй параметр типа беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: возвращает код символа ASCII, находящегося в строке в позиции, передаваемой вторым параметром, если указана позиция больше или равная длине строки, то возвращается код 0. Пример:

    puts (char "1a2b3c4e5f6h" 5) (hex (char "1a2b3c4e5f6h" 3) ) (char "1a2b3c4e5f6h" 30);

напечатает

    99 62 0


insubs

Формат вызова:

insubs <parameter0> <parameter1> <parameter3>;

ничего не возвращает, принимает три параметра;

первый параметр типа строка, допустима только переменная, массив не допустим;

второй параметр строка, допустим любой операнд, массив не допустим;

третий параметр типа беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: заменяет в строке, полученной первым параметром, часть текста на подстроку, полученную вторым параметром, третьим параметром указывается позиция, с которого производится замена, пример использования:

    puts (insubs “abcdefijklmnop” “123456” 3 );

напечатает

    abc123456lmnop


lowr

Формат вызова:

    (lowr <parameter0>)

возвращает строку, принимает один параметр;

параметр типа строка, допустим любой операнд, массив не допустим;

назначение операции: переводит все символы строки в нижний регистр и возвращает результат, пример использования:

    puts (lowr “abCDdeFijklMnoP”);

напечатает

    abcdefijklmnop


upr

Формат вызова:

    (upr <parameter0>)

возвращает строку, принимает один параметр;

параметр типа строка, допустим любой операнд, массив не допустим;

назначение операции: переводит все символы строки в верхний регистр и возвращает результат, пример использования:

    puts (lowr “abCDdeFijklMnoP”);

напечатает

    ABCDEFIJKLMNOP


getword

Формат вызова:

    (getword <parameter0> <parameter1>)

возвращает строку, принимает два параметра;

первый параметр типа строка, допустим любой операнд, массив не допустим;

второй параметр типа беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: возвращает слово, содержащееся в строке, начиная с символа с номером, указанным вторым параметром, строка передается первым параметром, слово извлекается, пока не будет обнаружен разделитель – символ с кодом менее 0x21, пример использования:

    puts (getword “abCDdeFijk lMnoP” 4);

напечатает

    deFijk


ascii

Формат вызова:

    (ascii <parameter0> [<parameter1> ...<parameter31>])

возвращает строку, принимает переменное число параметров от 1 до максимального;

первый параметр типа беззнаковое целое, допустим любой операнд, массив не допустим;

второй и последующие параметры такие же, как первый;

назначение операции: формирует строку из символов, ASCII код которых задается числами, передаваемыми параметрами, завершающий ноль указывать не требуется, пример использования:

    puts (ascii 0x21 0x22 0x23)

напечатает

    !”#


hex

Формат вызова:

    (hex <parameter0> [<parameter1>])

возвращает строку, принимает переменное число параметров от 1 до 2;

первый параметр беззнаковое целое, допустим любой операнд, массив не допустим;

второй параметр беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: возвращает строку, содержащую шестнадцатеричное представление целого числа, первый параметр задает число для преобразования, второй параметр ограничивает длину строки результата указанным числом символов, причем отсечка символов производится не с конца строки, а с ее начала, это удобно, например, если надо вывести только код младшего байта или тетрады, если параметр опущен, то строка не ограничивается.


oct

Формат вызова:

    (oct <parameter0> [<parameter1>])

возвращает строку, принимает переменное число параметров от 1 до 2;

первый параметр беззнаковое целое, допустим любой операнд, массив не допустим;

второй параметр беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: возвращает строку, содержащую восьмеричное представление целого числа, первый параметр задает число для преобразования, второй параметр ограничивает длину строки результата указанным числом символов, причем отсечка символов производится не с конца строки, а с ее начала, это удобно, например, если надо вывести только код младшего байта или тетрады, если параметр опущен, то строка не ограничивается.


bin

Формат вызова:

    (bin <parameter0> [<parameter1>])

возвращает строку, принимает переменное число параметров от 1 до 2;

первый параметр беззнаковое целое, допустим любой операнд, массив не допустим;

второй параметр беззнаковое целое, допустим любой операнд, массив не допустим;

назначение операции: возвращает строку, содержащую двоичное представление целого числа, первый параметр задает число для преобразования, второй параметр ограничивает длину строки результата указанным числом символов, причем отсечка символов производится не с конца строки, а с ее начала, это удобно, например, если надо вывести только код младшего байта или тетрады, если параметр опущен, то строка не ограничивается.


stdout

Формат вызова:

    stdout <parameter0> [<parameter1> ...<parameter31>];

ничего не возвращает, принимает переменное число параметров от 1 до максимального;

первый параметр типа строка, допустим любой операнд, массив не допустим;

остальные параметры такие же, как предыдущий;

назначение операции: в стандартный выходной поток исполняющей системы Ci по очереди выводит строки, получаемые параметрами, перед выводом не формируется временная строка, поэтому общая длина выводимого результата не ограничена, результат буферизуется операционной системой, поэтому может быть не выведен сразу, вывод производится как только в строке встретится символ перевода каретки ('\n') или конца потока (Ctrl-Z), для немедленного вывода (смотри операцию puts).


puts

Формат вызова:

    puts <parameter0> [<parameter1> ...<parameter31>];

ничего не возвращает, принимает переменное число параметров от 1 до максимального;

первый параметр типа строка, допустим любой операнд, массив не допустим;

остальные параметры такие же, как предыдущий;

назначение операции: выводит полученные параметрами строки, через пробелы, в стандартный выходной поток исполняющей системы Ci, после чего выводит туда символ перевода каретки, в результате буферизованная системой строка передается в стандартный выходной поток и следующий текст выводится уже с новой строки, пример использования:

    puts “строка,“, “состоящая”, “из трех”;

    puts “еще строка“;

    напечатает:

    строка, состоящая из трех

    еще строка


floatstyle

Формат вызова:

    floatstyle <parameter0> [<parameter1>];

ничего не возвращает, принимает от 1 до 2 параметров;

первый параметр типа uint, допустим любой операнд, массив не допустим;

второй параметр типа bool, допустим любой операнд, массив не допустим;

назначение операции: задает формат преобразования вещественных чисел в строку, при использовании с одним параметром изменяет число знаков после запятой, независимо от текущего стиля вывода чисел, при изменении количества знаков преобразуемое число математически округляется, при использовании со вторым необязательным параметром, если его значение TRUE, то число будет выводиться в нормальном представлении, то есть, как 1234.56, если значение FALSE или параметр опущен, то в экспоненциальном, то есть, как 1.23456E3, общее число знаков до запятой и после нее не может быть больше 7, пример использования:

    float f 9876.5432;

    puts f; ``выведет 9876.5432

    floatstyle 3;

    puts f; ``выведет 9876.543

    floatstyle 2 FALSE;

    puts f; ``выведет 9.88E3

    floatstyle 4;

    puts f; ``выведет 9.8765E3


fileputs

Формат вызова:

    fileputs <parameter0> <parameter1> [<parameter2>...<parameter31>];

ничего не возвращает, принимает от 2 до максимально допустимого числа параметров;

все параметры типа str, допустим любой операнд, массив не допустим;

назначение операции: запись строк в файл на постоянном носителе, первый параметр имя файла, после него от 1 до 32 строк, если файл не существовал, то он создается, если существовал, то строки последовательно дописываются в конец файла, типа файла всегда считается простым текстовым, UNICODE не поддерживается (строки записываются в ASCII), строки записываются аналогично puts, то есть, в конец каждой добавляется перевод на новую строку, а между несколькими строками, заданными параметрами, вставляется пробел.

Имя файла задается в стандарте, принятом для используемой операционной системы, оно не приводится к какому-то определенному формату, поэтому использование fileputs делает Ci-программу системозависимой.

Пример для ОС Microsoft Windows:

    fileputs “C:\\TMP\\sample.txt“ “пример создания текстового файла“;

    puts “выполняется запись“;

    fileputs “C:\\TMP\\sample.txt“ “из“, “двух“, “строк“ ;

напечатает текст:

    выполняется запись

и запишет в файл C:\TMP\sample.txt следующий текст:

    пример создания текстового файла

    из двух строк


filereads

Формат вызова:

    filereads <parameter0> <parameter1>;

ничего не возвращает, принимает 2 параметра;

первый параметр типа str, допустим любой операнд, массив не допустим;

второй параметр типа стр, допустим только массив целиком;

назначение операции: загружает из файла, имя которого заданно первым параметром, текстовые строки в строковый массив, задаваемый вторым параметром, загружается столько строк, сколько элементов у массива, либо пока не обнаружен конец файла, загрузка производится всегда с начала файла, строки считываются без завершающего символа возврата каретки, при файловой ошибке программа прерывается (выполняется блок, заданный операцией onerror), если необходимо заполнять один и тот же массив из разных файлов, то перед каждым новым заполнением следует производить очистку этого массива вызовом операции clear. Пример использования (подразумевается, что файл записан при помощи операции fileputs):

    str a[2];

    filereads “C:\\TMP\\sample.txt“ a;

    puts a[0] a[1];

напечатает:

    пример создания текстового файла из двух строк