Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Передача строк в качестве параметров функций
Строки Одномерный массив наиболее часто применяется в виде строки символов. Строка — это одномерный массив символов, заканчивающийся нулевым символом. В языке С признаком окончания строки (нулевым символом) служит символ '\0'. Таким образом, строка содержит символы, составляющие строку, а также нулевой символ. Это единственный вид строки, определенный в С. Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так: char str[11]; Последний, 11-й байт предназначен для нулевого символа. Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, " некоторая строка" В конец строковой константы компилятор автоматически добавляет нулевой символ. Для обработки строк в С определено много различных библиотечных функций. Чаще всего используются следующие функции:
Эти функции объявлены в заголовочном файле < string.h>. Применение библиотечных функций обработки строк иллюстрируется следующим примером: #include < stdio.h> #include < string.h>
int main(void) { char s1[80], s2[80];
gets(s1); gets(s2);
printf(" Длина: %d %d\n", strlen(s1), strlen(s2));
if(! strcmp(s1, s2)) printf(" Строки равны\n");
strcat(s1, s2); printf(" %s\n", s1);
strcpy(s1, " Проверка.\n"); printf(s1); if(strchr(" Алло", 'e')) printf(" л есть в Алло\n"); if(strstr(" Привет", " ив")) printf(" найдено ив ");
return 0; } Если эту программу выполнить и ввести в s1 и в s2 одну и ту же строку " Алло! ", то на экран будет выведено следующее: Длина: 5 5 Строки равны Алло! Алло! Проверка, л есть в Алло найдено ив Следует помнить, что strcmp() принимает значение ЛОЖЬ, если строки совпадают (хоть это и несколько нелогично). Поэтому в тесте на совпадение нужно использовать логический оператор отрицания! как в предыдущем примере. Передача строк в качестве параметров функций Строка в Си++ - это массив символов, заканчивающийся нуль-символом – ‘\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки. Для работы со строками существуют специальные библиотечные функции, которые содержатся в заголовочном файле string.h. Строки при передаче в функции могут передаваться как одномерные массивы типа char или как указатели типа char*. В отличие от обычных массивов в функции не указывается длина строки, т. к. в конце строки есть признак конца строки /0. //Функция поиска заданного символа в строке int find(char *s, char c) { for (int I=0; I< strlen(s); I++) if(s[I]==c) return I; return –1 }
Строки Строка в C++ – это массив символов, заканчивающийся нуль-символом – ’\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки.
Рис. 4. Представление строки и символа
Присвоить значение строке с помощью оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации. char s1[10]=" string1"; //инициализация char s2[]=" string2"; //инициализация char s3[10]; cin> > s3; //ввод //выделение памяти под динамическую строку char *s4=new char[strlen(s3)+1]; strcpy(s4, s3); //копирование строки s3 в строку s4 Для работы со строками существуют специальные библиотечные функции, которые содержатся в заголовочном файле string.h.
Строки при передаче в функции могут передаваться как одномерные массивы типа char или как указатели типа char*. В отличие от обычных массивов в функции не указывается длина строки, т. к. в конце строки есть признак конца строки \0.
|