Студопедия

Главная страница Случайная страница

Разделы сайта

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






Конкатенация (объединение) строк






Сначала простой вопрос – каков результат выполнения следующего кода:

char str1[10]=" Hello"; char str2[10]=" World! "; char* str3; str3=str1+str2;

Если ответ – ошибка на этапе компиляции, материал изложенный в статье вы усвоили (или знали это раньше). Если же вы полагаете, что в str3 будет хранится строка " Hello world! ", то вероятно, мои предыдущих объяснений оказалось недостаточно. Нельзя складывать указатели (и имена массивов).

Для конкатенации следует использовать функции.

Есть две специальные функции:

char* strcat(char* dest, const char* source)char* strncat(char* dest, const char* source, size_t size)

Эти функции добавляют к строке, на которую указывает dest, символы из строки source. Первая версия добавляет все символы до нуль-символа, вторая – максимум size символов. Результирующая строка завершается нуль-символом.

 

Поиск одного из символов одной строки в другой

Char *strcspn(char *s1, char *s2); Возвращает значение индекса любого из символов из s2 в строке s1.

Поиск символа одной строки, отсутствующий в другой

Char *strspn(char *s1, char *s2); Возвращает индекс первого символа в s1, отсутствующего в s2.

char *string1 = " 14234567890";

char *string2 = " 123DC8";

int length;

length = strspn(string1, string2);

printf(" Character where strings differ is at position %d\n", length); //1

strpbrk - найти в строке s1 любой из множества символов, входящих в строку s2.

char *strpbrk(char *s1, char *s2);

 

char *string1 = " abcdefghijklmnopqrstuvwxyz";

char *string2 = " onm";

char *ptr;

ptr = strpbrk(string1, string2);

if (ptr)

printf(" strpbrk found first character: %d\n", ptr-string1);

else

printf(" strpbrk didn't find character in set\n");

 

strtok - выделить из строки s1 лексемы, разделенные любым из множества символов, входящих в строку s2.

char *strtok(char *s1, char *s2);

char *s1, *s2;

char input[16] = " a; b c, d";

char *p;

p = strtok(input, ",; ");

while(p){

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

p = strtok(NULL, ",; ");

}

Первый вызов формирует адрес первой лексемы в строке input. Он сохраняется в переменной р. Функция strtok заменяет на NULL разделитель находящийся после найденного слова. Оператор strtok в цикле выполняет поиск следующей лексемы в той же строке. Для этог следует задать в функции strtok в качестве первого параметра NULL.

Использование функций strupr и strlwr библиотеки этапа выполнения:

cout < < " Верхний регистр: " < < strupr(title) < < endl;
cout < < " Нижний регистр: " < < strlwr(lesson) < < endl;

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.