Строки как одномерные массивы символов

Работа со строками в языке С реализована путем использования одномерных мас­сивов типа char, т.е. строка символов – это одномерный массив типа char, заканчиваю­щийся нулевым байтом. Нулевой байт – это байт, каждый бит которого равен нулю, при этом для нулевого байта определена символьная константа ´\0´ (признак окончания строки или нуль-терминатор). Поэтому, если строка должна состоять из k символов, то в описании массива необходимо указать размер k+1.

Например, описание char a[7], означает, что строка содержит шесть символов, а последний байт отведен под нуль-терминатор.

Строковая константа в языке С – это набор символов, заключенных в двойные кавычки. Например: “Лабораторная работа по строкам”. В конце строковой константы явно указывать символ ´\0´ не нужно, так как это сделает компилятор языка С.

Строки можно инициализировать при декларировании, например:

char S1[10]=”123456789”, S2[ ]=”12345”;

в последнем случае размер строки будет установлен по фактическому количеству символов.

Для ввода строки с клавиатуры дисплея используются две стандартные библи­отечные функции, прототипы которых приведены в файле stdio.h.

Функция scanf () вводит значения для строковых переменных спецификатором ввода %s. Но надо помнить, что функция scanf() вводит символы до появления первого символа “пробел”.

Библиотечная функция gets () обеспечивает ввод строки с пробелами внутри этой строки. При этом ввод строки символов завершается нажатием клавиши ENTER.

Обе функции автоматически ставят в конец строки нулевой байт. И, кроме того, так как строка – это символьный массив, а имя массива – это указатель на его начало в памяти, то символ «&» перед именами строк при использовании этих функций указывать не надо.

Вывод строк выполняют функции printf () или puts (). Обе функции выводят символьный массив до первого нулевого байта. Функция printf() не переводит курсор после вывода на начало новой строки, программист должен предусмотреть такой перевод в строке формата. Функция puts() автоматически переводит курсор после вывода строковой информации в начало новой строки.

Операции над строками как объектами сложного типа, рекомендуется выполнять, используя стандартные функции. Декларации функций для работы со строками размещены в файле string.h. Рассмотрим наиболее часто используемые:

1. Функция strcpy (S1, S2) - копирует содержимое строки S2 в строку S1.

2. Функция strcat (S1, S2) - присоединяет строку S2 к строке S1 и помещает ее в массив, где находилась строка S1, при этом строка S2 не изменяется. Нулевой байт, который завершал строку S1, заменяется первым символом строки S2.

3. Функция strcmp (S1, S2) сравнивает строки S1 и S2 и возвращает значение =0, если строки равны, т.е. содержат одно и то же число одинаковых символов; значение <0, если S1<S2; значение >0, если S1>S2.

4. Функция strlen (S) возвращает длину строки, т.е. количество символов, начиная с первого (S[0]) и до нуль-терминатора, который не учитывается.

5. Функции преобразования строки S в число:

- целое: int atoi (S);

- длинное целое: long atol (S);

- действительное: double atof (S);

при ошибке данные функции возвращают значение 0.

6. Функции преобразования числа V в строку S:

- целое: itoa (int V,char S,int kod);

- длинное целое: ltoa (long V,char S,int kod); 2<=kod<=36, для отрицательных чисел kod=10.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: