рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Строковые константы, массивы символьных строк и их инициализация. Указатели и строки, ввод-вывод и обработка строк.

Строковые константы, массивы символьных строк и их инициализация. Указатели и строки, ввод-вывод и обработка строк. - раздел Образование, Общая характеристика языка Си в сравнении с другими процедурными языками В Языке C, В Отличие От Языка Pascal, Отсутствует Специальный Строковый Тип Д...

В языке C, в отличие от языка Pascal, отсутствует специальный строковый тип данных. Строка представляет собой последовательность (одномерный массив) из одного или более символов, последним из которых является нулевой символ таблицы ASCII ''. Это единственный вид строки, определенный в C.

 

Язык C поддерживает строковые константы, называемые строковыми литералами. Строковый литерал – это любая последовательность символов, заключенная в двойные кавычки ("…"). В конце литерала компилятор автоматически добавляет нулевой символ.

 

Не следует путать понятия строки и символа. Символьная константа заключается в одинарные кавычки, а строковая – в двойные.

 

Например, 'c' – символьная константа, а "c" – строковая константа.

 

Литерал можно задать с помощью директивы препроцессора define:

 

# define STR "…"

 

Строковая переменная может быть сформирована как одномерный массив типа char либо с помощью указателя на переменную типа char. Количество символов в массиве (объем выделяемой памяти) должно быть не меньше, чем количество символов в строке плюс один символ для хранения символа нуль.

 

К началу главы

11.1. Представление символьной строки при помощи одномерного массива

 

Синтаксис объявления имеет вид:

 

char ID [N];

 

где ID – идентификатор массива, N – длина массива, при этом в памяти для хранения строки выделяется N байт.

 

Например, для переменной char ST[10] в памяти выделяется 10 байт, что дает возможность сформировать строку из 9 символов. Для таких строк действуют все правила представления и обработки массивов.

 

Идентификатор массива – константа типа указатель, значение которой равно адресу первого элемента массива.

 

Инициализация возможна двумя способами:

 

· посимвольная инициализация char st[10]={'y','e','s',''};

 

при этом оставшиеся 6 позиций не будут заполнены;

 

· инициализация на основе строковой константы char st [10]="Yes";

 

при этом в выделенную для строки память будут помещены 3 символа и добавлен четвертый – символ ''.

 

Инициализация и объявление возможны без указания длины массива char st[]={'y','e','s',''};

 

в этом случае будет создан массив из четырех элементов.

 

К началу главы

11.2. Указатель на символьную строку

 

По форме записи данная конструкция ничем не отличается от указателя на символьную переменную: char *S1;

 

где char – тип указателя на символ, S1 – переменная-указатель.

 

Для инициализации указателя требуется указать область памяти, где уже находится или будет находиться строка, при этом для строки должен быть выделен необходимый объем памяти.

 

Существует ряд способов инициализации указателя на строку:

 

· инициализация строковым литералом char *S1="Yes";

 

· присваивание значение другого указателя char *S1=S;

 

где S – идентификатор массива или указатель на другую строку символов.

 

Указателю можно присваивать значение другого указателя: S1=S;

 

где S1 – переменная типа указатель; S – строковая константа, идентификатор массива или указатель на другую строку символов.

 

Например, char *S1, S[10]="Yes"; S1=S;

 

При этом создаются переменная-указатель S1 и массив символов S, под который выделяется поле длиной 10 символов, 4 из которых будут заполнены. Затем в переменную-указатель записывается адрес символьного массива (рис. 11.1).

 

Рис. 11.1. Строковая константа и указатель

 

К началу главы

11.3. Ввод/вывод символьных строк

 

Ввод символьных строк с клавиатуры в языке C осуществляется с помощью функций scanf() и gets(), объявленных в заголовочном файле stdio.h. При работе с этими функциями следует помнить, что для строк предварительно должна быть выделена память. Конечный нуль добавляется после завершения ввода строки автоматически.

 

Существует несколько способов ввода строк:

 

· scanf ("%s",S1); где S1 – указатель типа char* на предварительно выделенную область. При использовании формата %s аргумент рассматривается как строка. Ввод строки реализуется до пробела или нажатия [Enter]. Несколько слов вводить в одну переменную с помощью scanf нельзя;

 

· scanf ("%Ns",S1); где N – максимальное число символов, записываемых в строку S1. Заполнение строки заканчивается при вводе N непробельных символов или выполняется до первого пробельного символа.

 

· gets (S1); при помощи этой функции можно вводить строку, содержащую пробелы. Ввод прекращается при нажатии [Enter] или при заполнении буфера клавиатуры.

 

Вывод символьных строк на экран в C осуществляется с помощью функций printf() и puts():

 

· printf("%s",S1); где S1 – указатель типа char*

 

· puts (S1);

 

Вывод строки продолжается до символа '/0'.

 

Пример 1. Что напечатает ЭВМ?

 

#include <stdio.h>

 

#define STR "What is your name?"

 

int main()

 

{

 

char *ch;

 

static char ch1[]="My name is Georgen";

 

ch=STR;

 

printf("n%s t %s",ch,ch1);

 

/*t – табуляция – сдвиг на заданное количество позиций*/

 

for (int i=0;i<6;i++)

 

{

 

printf("n %c", *(ch+i));

 

printf(" %c", *(ch1+i));

 

}

 

return 0;

 

}

 

На экране будут выведены строки:

 

What is your name? My name is George

W

M

 

h

y

 

a

 

 

t

n

 

 

a

 

i

m

 

 

Пример 2. Задан указатель на символьную строку. Подсчитать, сколько раз в строке встретится буква 'а':

 

# include <stdio.h>

 

int main()

 

{

 

int k;

 

char *S2="Ivanov is an engineer";

 

for (k=0; (*S2)!= ''; S2++)

 

if ((*S2)=='a'||(*S2)=='A') k++;

 

printf("n number of 'a' is %d",k);

 

return 0;

 

}

 

После завершения работы цикла указатель S2 указывает на конец строки, и доступ к этой строке теряется.

 

 

– Конец работы –

Эта тема принадлежит разделу:

Общая характеристика языка Си в сравнении с другими процедурными языками

Операции языка Си... Любое выражение языка состоит из операндов переменных констант и др соединенных знаками операций Знак операции...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Строковые константы, массивы символьных строк и их инициализация. Указатели и строки, ввод-вывод и обработка строк.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Общая характеристика языка Си в сравнении с другими процедурными языками.
Общая характеристика языка программирования Си. Алфавит языка. Понятие переменной и константы в языке программирования Си, их типы. Примеры. Язык программирования Си был разработан в 1972 году сотр

Основные типы данных, переменные и константы. Препроцессор языка Си.
  В алфавит языка программирования Си включаются латинские буквы (прописные и строчные), цифры и некоторые специальные знаки: скобки круглые “(“ и “)” , квадратные “[“ и “]” , фигурны

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

Циклы и другие управляющие средства.
Цикл с предусловием   Существует три вида циклов: while, for и do. Цикл while имеет следующую форму: while (e) s;   Оператор s выполняется до

Определение структурных переменных. Доступ к компонентам структуры.
Структура объединяет логически связанные данные разных типов. Структурный тип данных определяется следующим описанием:   struct имя_структуры {   Описа

Объединения и перечисления. Указатели и структуры. Массив структур.
Объединения   Объединение описывает переменную, которая может иметь любой тип из некоторого множества типов.   Определение объединенного типа данных ан

Стандартные библиотечные функции языка Си, функция генерации случайных чисел.
Библиотека языка Си содержит множество функций и макроопределений. Библиотеки меняются от системы к системе, но есть ядро функций (стандартная библиотека).   Эти функции испо

Динамические структуры данных (стек, список, дерево, граф).
  Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ. Last In — First Out, «последним пришел — первым вышел»). Чаще всего принцип работы стека сра

Графический интерфейс пользователя (GUI). Типы данных Win32.
Графи́ческий интерфе́йс по́льзователя (ГИП), графический пользовательский интерфейс (ГПИ) (англ. Graphical user interface, GUI; сленг. ГУИ или Гуй) — разновидность пользовательского

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

Однострочное и многострочное поле для ввода текста.
Можно создавать одну или несколько строк текста, каждая из которых является отдельным объектом. Строки можно по отдельности перемещать, форматировать или редактировать иным образом.  

Создание процесса, создание потока, рабочие функции потока, обмен сообщениями между процессами и потоками.
Функция CreateThread создает для процесса новый поток. Созданный поток должен определить начальный адрес кода, с которого новый поток должен исполняться. Как правило, начальный адрес - это название

Графический интерфейс устройства (CDI). Контекст устройства. Регионы и отсечение.
Графический интерфейс пользователя (Graphical User Interface, GUI) это система средств для взаимодействия пользователя с устройством, основанная на представлении всех доступных пользователю системн

Режимы многозадачности, многопоточная архитектура, преимущества Windows.
Многозадачность (multitasking) - это способность операционной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной системой аппаратного таймер

Базовый алгоритм численного интегрирования методом прямоугольников.
Задача численного интегрирования состоит в замене исходной подинтегральной функции f(x), для которой трудно или невозможно записать первообразную в аналитике, некоторой аппроксимирующей функцией &#

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги