Направления программирования. История создания языка Си. Особенности языка, страница 18

Язык Си допускает использование строковых констант (последовательность символов, заключенных в “  ”).

char *str = “ string “ – компилятор статически зарезервирует 7 байт, 7-ой байт для ‘\0’, а str будет хранить адрес начала строки.

Если инициализируем строку посимвольно, то необходимо добавить в конец строки ‘\0’ :

str[0]= ‘s’

………

str[6]= ‘\0’

Для работы со строками существует специальная библиотека, описание функций этой библиотеки находятся в файле “ string.h “.

Все функции библиотеки работают со строками, оканчивающимися символом ‘\0’.

Функции работы со строками.

1.  Копирование строк.

char * strcpy ( char *string1,char * string2)

Функция копирует строки, адрес которой определяется значением аргумента string2, включая ‘\0’,         по адресу, определенному string1 и возвращает значение аргумента string1.

2.    Склеивание строк (конкатенация).

char *strcat(char *string1, char *string2)

Добавляет строку, заданную значением аргумента string2, в конец строки, адрес которой задается значением аргумента string1, записывая в конец строки  результата ‘\0’ и возвращает указатель на сцепленную строку (string1).

3.    Сравнение строк.

int strcmp(char *string1, char *string2)

Возвращает 0, если string1=string2. Если 1-ая меньше чем 2-ая, то возвращает значение меньшее 0, больше 0, если 2-ая больше первой. Данная функция сравнивает строки, считая символы верхнего и нижнего регистра эквивалентными (только для латинских).

1.  Длина строки.

int strlen(char *string)

Возвращает длину строки в байтах, причем нулевой байт не учитывается.

2.  Поиск первого вхождения  заданного символа.

char *strchr(char *string1, char  ch)

Осуществляет поиск первого вхождения ch и возвращает указатель на первый его символ. Если символ не найден, то возвращается константа NULL.

3.  Поиск вхождения строки в строку.

char *strstr(char *string1, char *string2)

Возвращает указатель на первое вхождение подстроки string2 в строку string1, если не найдено, то NULL.

4.  Преобразование строки в нижние регистры.

char *strlwr(char *string)(только для латинских)

5.  Перевод строки в нижние регистры.

char *strupr(char *string)

Ввод-вывод строк.

Можно ввести строку используя функцию scanf() со спецификацией %s, но нужно помнить, что эта функция вводит символ до первого пробельного символа. Строка-результат тоже заканчивается признаком конца строки. Существуют специальные функции ввода-вывода строк, прототипы которых описаны в studio.h.

1)  Ввод строки.

char *gets(char *string)

Читает строку из стандартного входного потока stdin и помещает считанную строку по адресу, задаваемому параметром *string. Ввод заканчивается клавишей Enter. Функция возвращает адрес string, если строка считана удачно и NULL, если произошла ошибка. В строку включаются все символы, до первого встретившегося символа новой строки, не включая его. Строка-результат заканчивается ‘\0’. Поскольку в функции не задается параметр, ограничения длины строки, следует соблюдать осторожность, т.к. число символов может превысить размер памяти, отведенной под строку string.

2)  Вывод строки.

char *puts(char *string)

Функция puts в отличии от printf работает быстрее. Записывает строку, адрес которой задается значением string в стандартный выходной поток stdout. В результате действия puts() всегда происходит переход на новую строку, добавляя в завершении символ конца строки(‘\0’).

Ввод-вывод символа.

Прототипы функций описаны в conio.h.

1)  int getch() – с помощью этой функции из стандартного входного потока считывается очередной символ без отражения его на экране. Возвращаемое значение – код прочитанного символа.

2)  int getche() – аналогично функции getch() считывает из стандартного выходного потока очередной символ (если его нет, ожидает нажатие клавиши), но с отображением его на экране.

3)  void putch(int simv) – выводит символ, код которого задается значением simv в stdout.