Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные работы / работа со строками в языке программирования СИ.doc
Скачиваний:
76
Добавлен:
28.01.2014
Размер:
125.95 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Саратовский государственный технический университет

Балаковский институт техники, технологии и управления

Работа с символами и строками в языке программирования си

Методические указания к выполнению лабораторной работы по курсу «Логическое программирование» для студентов специальности 071900 дневной формы обучения

Одобрено

редакционно-издательским советом

Балаковского института техники,

технологии и управления

Балаково 2009

ЦЕЛЬ РАБОТЫ: познакомиться с понятиями символьной, строковой переменной, строковой константы, указателя на строки, научиться выполнять операции ввода/вывода строк, определять специфику работы со строковыми функциями.

1. Общие понятия

В данной работе рассматриваются символьные переменные, строковые переменные и константы, операции ввода/вывода строк, основные функции работы со строками.

1.1. Символьные переменные

Любой текст состоит из символов. Для хранения одного символа предназначен тип данных char. Переменную типа char можно рассматривать двояко:

  • как целое число, занимающее 1 байт и способное принимать значения:

    • от 0 до 255 (тип unsigned char);

    • от -128 до 127 (тип signed char);

  • как один текстовый символ.

Сам же тип char может оказаться как знаковым, так и беззнаковым, в зависимости от операционной системы и компилятора. Поэтому использовать тип char не рекомендуется, лучше явно указывать, будет ли он знаковым (signed) или беззнаковым (unsigned).

Как и целые числа, данные типа char можно складывать, вычитать, умножать, делить, а можно выводить на экран в виде одного символа.

Если нужно вывести числовое значение символа, также называемое ASCII-кодом, то значение символа необходимо преобразовать к типу int. Например:

#include<iostream>

using namespace std;

int main()

{

unsigned char c='A'; // Константы char заключаются в одинарные кавычки

cout<<c<<" "<<(int)c<<endl;

c=126; // char можно присвоить и числовое значение

cout<<c<<" "<<(int)c<<endl;

return 0;

}

В этом примере переменной с типа char присваивается значение, равное символу 'A' (константы типа char записываются как символы в одинарных кавычках), затем на экран выводится значение c как символа и его ASCII-код, потом переменной c присваивается значение 126, то есть символ с ASCII-кодом 126 и снова выводится на экран символ и его ASCII-код.

1.2. Строковые переменные и константы

Текстовую строку можно представить, как массив символов типа char, но в языке СИ для хранения текстовых строк был создан более удобный тип string.

Строковые переменные используются для хранения последовательности символов.

Строковые переменные должны быть объявлены перед тем, как начнется их использование. Объявление строковой переменной выглядит следующим образом: char s[14],

где s рассматривается как массив с элементами символьного типа, который может содержать до 14 элементов. Предположим, что s присваивается строковая константа:

Я ПРОГРАММИСТ!

Строковая константа – это последовательность символов, заключенная в кавычки. Каждый символ строки хранится как элемент массива. В памяти строка хранится следующим образом:

‘Я’

‘’

‘П’

‘Р’

‘О’

‘Г’

‘Р’

‘А’

‘М’

‘М’

‘И’

‘С’

‘Т’

‘!’

‘\0’

Символ ‘\0’ нуль (null) – символ автоматически добавляется к внутрисистемному представлению строки для того, чтобы в программе можно было определить конец строки. Таким образом, при описании строковой переменной следует предусматривать один дополнительный элемент для завершающего нуль-символа.

Строки также могут вписываться в память и считываться при помощи символьных указателей. Символьный указатель на строку объявляется следующим образом: char *pstr = ЗДРАВСТВУЙ,

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