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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Наиболее частым применением одномерных массивов в языке Си являются строки, поскольку отдельного типа данных «строка символов» нет. Работа со строками реализована путем использования одномерных массивов типа char, т.е. строка символов – это одномерный массив типа char, заканчивающийся нулевым байтом (символом с кодом 0). Для нулевого байта определена символьная константа ´\0´(признак окончания строки или нуль-терминатор). Поэтому при объявлении символьных массивов следует задавать размер, достаточный для хранения всех символов строки, и нуль-терминатора: описание: char a[7] означает, что строка содержит шесть символов, а последний байт отведен под нулевой.

Строковая константа в языке Си – это набор символов, заключенных в двойные кавычки. Например: “Лабораторная работа 3”. В конце строковой константы явно указывать символ ´ \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. Нулевой байт, который завершал строку S1, заменяется первым символом строки S2.

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

4.Функция strlen (S) возвращает длину строки, при этом завершающий нулевой байт не учитывается.

5. Функция strstr (S1, S2) возвращает указатель на первое вхождение строки S2 в строку S1.

6. Функция strchr (S1, S2) возвращает указатель на первое вхождение символа S2 в строку S1.

7. Функции преобразования строки S в число — возвращается число, записанное в строке S, или нуль, если строка не является записью числа:

Целое: int atoi (S);

Длинное целое long atol (S);

Действительное double atof (S).

8. Функции преобразования числа V в строку S — в строке S формируется запись целого числа V в системе счисления с основание kod:

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

Длинное целое ltoa (long V,char S, int kod);

9. Операция sizeof (параметр) вычисляет размер памяти в байтах, отводимый под объект. Здесь параметр – тип объекта или его идентификатор (но не имя функции!):

sizeof(int) результат 2 байта;

int b[5]; sizeof(b) результат 10 байт;

int c[3][4]; sizeof(c) результат 24 байт

 

Пример работы со строковыми данными

Листинг 7. В программе значение строки вводится с клавиатуры, затем введенная строка распечатывается в обратном порядке.

/*__________________________________*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

void main(void)

{ char s[100]; /* объявление символьного массива */

nt i, k;

clrscr();

puts(" Введите исходную строку");

gets(s);

k=strlen(s);

puts(" РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ\n");

for (i=k; i>=0; i--)

printf("%c",s[i]); /* вывод элементов массива в обратном порядке */

printf("\n Press any key...");

getch();

}

 



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 424; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.184.62 (0.005 с.)