Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Конкатенация (объединение) строк
Сначала простой вопрос – каков результат выполнения следующего кода:
Если ответ – ошибка на этапе компиляции, материал изложенный в статье вы усвоили (или знали это раньше). Если же вы полагаете, что в str3 будет хранится строка " Hello world! ", то вероятно, мои предыдущих объяснений оказалось недостаточно. Нельзя складывать указатели (и имена массивов). Для конкатенации следует использовать функции. Есть две специальные функции:
Эти функции добавляют к строке, на которую указывает 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;
|