Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Присвоение значения строке




Тема 8. СТРОКИ

Что такое строка в языке Си?

Строки являются одним из самых важных и часто используемых типов данных практически в любой языке программирования, некоторые из которых поддерживают специальный строковый тип, называемый обычно string. В языке Си такого типа в явном виде нет: строка в нем представляет собой массив типа char, заканчивающийся так называемым нуль-символом. Такое определение накладывает определенные особенности на работу со строками, изучаемые в данной теме. Рассматривается также библиотека string.h, содержащая ряд стандартных часто используемых функций для работы со строками.

Итак, для представления строки в языке Си используется массив типа char, заканчивающийся специальным символом \0. Под этот нуль-символ резервируется один элемент массива, поэтому для работы со строками длины N необходим массив длины N+1. Например, объявление

 

char myString[31];

 

выделяет память под строку с именем myString, позволяющую работать со строками, длина которых не превосходит 30 символов. Как и в массиве, нумерация символов строки начинается с нуля, поэтому эта строка позволяет работать с символами, индексы которых находятся в диапазоне от 0 до 29. Символ с индексом 30 – это нуль-символ.

Присвоение значения строке

Способ 1. Инициализация или присвоение значения при объявлении.

 

char myString[] = "Моя первая строка";

 

При использовании этого способа длину строки можно не указывать. Не нужно также и записывать нуль-символ в конец массива, поскольку эти действия выполняются автоматически. Проверить правильность присвоения можно, вызвав функцию printf():

 

printf("%s\n", myString);

Способ 2. Инициализация строки поэлементно.

char str[] = {'H','e','l','l','o','\0'};

 

В данном случае размер определяется автоматически, но нуль-символ нужно поставить явно.

Способ 3. Присвоение значения строке поэлементно после объявления.

 

char str[31];

myString[0] = 'H'; myString[1] = 'e';

myString[2] = 'l'; myString[3] = 'l';

myString[4] = 'o'; myString[5] = '!';

myString[6] = '\0';

 

Обратите внимание на то, что в данном случае нуль-символ нужно поставить явно, иначе определить конец строки будет невозможно. В частности, функция printf() не сможет определить, где заканчивать вывод. Эта ситуация будет напоминать автомобиль без тормозов: он где-то остановится, но заранее это место не известно. На экране появится нужное сообщение, а после него – какой-нибудь компьютерный мусор:

 

Еще один аспект, на который необходимо обратить внимание, заключается в том, что при объявлении строки указывается длина 31, но значения присваиваются только семи элементам. Это нормальная ситуация, поскольку все функции, работающие со строками, определяют конец строки не по количеству выделенной под нее памяти, а по позиции нуль-символа. Например, так делает функция printf().

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 89; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты