пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Массивы символов

Массивы символов в языках С и С++

 

 

Хотя языки С и C++ поддерживают тип данных char, в переменных этого типа могут храниться только одиночные символы, но не строки текста. Если в программе необходимо работать со строками, их можно создавать как массивы символов. 

В таком массиве для каждого символа строки отводится своя ячейка, а последний элемент содержит символ конца строки — \0. В следующем примере создаются три символьных массива. Массив szvehicle1 заполняется символ за символом с помощью оператора присваивания. Данные в массив szvehicle2 заносятся с помощью функции scanf(), а массив szvehicle3 инициализируется константной строкой. 

/* 
* string.с 
* Эта программа на языке С демонстрирует работу с массивами символов. 
*/
#include ‹stdio.h›
main() { char szvehiclel[7], /* машина 
*/ szvehicle2[8]; 
/* самолет */ static char szvehicleS[8] = "корабль"; 
/* корабль */ szvehiclel[0] = 'м' szvehiclel[1] = 'a' szvehiclel [2] = 'ш' szvehiclel[3] = 'и' szvehiclel[4] = 'н' szvehiclel[5] = 'a' szvehiclel[6] = '\0'; 
printf ("\n\n\tВведите слово -—> самолет ") ;
 scanf("%s",szvehicle2);
printf("%s\n",szvehiclel); 
printf("%s\n",szvehicle2); 
printf("%s\n",szvehicle3); 
return(0); } 


Хотя слово "машина", сохраненное в массиве szvehiclel, состоит из шести букв, массив содержит семь элементов: по одному для каждой буквы плюс еще один для символа конца строки. 

То же самое справедливо и для других двух массивов. Вспомните также, что массив szvehicle3 можно задать путем указания последовательности символов в фигурных скобках: 

static char szvehicleS[8]= {'к','о','р','а','б','л','ь','\0'}; 

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

static char szvehicleS[] = "корабль"; 

При этом размер массива определяется компилятором автоматически. Часто содержимое массива запрашивается у пользователя с помощью функции scanf( ) , как в случае с массивом szvehicle2. 

В нашем примере в функции scanf( ) применяется спецификация %s,означающая ввод строки. В результате функция пропустит ведущие пробельные литеры (символы пробела, табуляции и конца абзаца), после чего; запишет в массив последовательность символов вплоть до следующей пробельной литеры. В завершение к набору символов будет автоматически добавлен символ конца строки. Помните, что при объявлении массива следует указать такой размер, чтобы в массиве поместился весь вводимый текст вместе с символом \0. 

Рассмотрим еще раз строку программы, в которой в массив szvehicle2 записывается информация: 

scanf ("%s",szvehicle2);
 
Не удивил ли вас тот факт, что имени szvehicle2 не предшествует оператор взятия адреса &? Это объясняется тем, что имя массива, в отличие от имен других переменных, уже является адресом первого его элемента. Когда в функции printf ( ) задана спецификация %s, то предполагается наличие аргумента также в виде адреса строки. Строка текста будет выведена на экран полностью, за исключением завершающего нулевого символа. 

Ниже показана программа на языке C++, аналогичная рассмотренной выше: 

//
 // string. срр 
// Это версия предыдущей программы на языке C++. 
//
#include ‹iostream.h›
main () { char szvehiclel [7], 
// машина szvehicle2 [8]; 
// самолет static char szvehicleS[8] = "корабль"; 
// корабль szvehiclel[0] = 'м' 
szvehiclel[1] = 'a'
szvehiclel[2] = 'ш' 
szvehiclel[3] = 'и' 
szvehiclel[4] = 'н' 
szvehiclel[5] = 'a' 
szvehiclel[6] = '\0'; 
cout<< "\n\n\tВведите слово --> самолет "; 
cin >> szvehicle2; 
cout << szvehiclel << "\n"; 
cout << szvehicleS << "\n"; 
return(0); 


При выполнении любой из приведенных программ на экран будет выведено следующее: 

машина 
самолет 
корабль

cout << szvehicle2 << "\n";

 

27.12.2014; 11:30
хиты: 118
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь