Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Перечень функций приведен на рис. 17.
| Прототип | Описание функции |
| char *scrcpy (char *s1, const char *s2) | |
| Копирует строку s2 в массив s1. Возвращает значение s1. | |
| char *strncpy (char *s1, const char *s2, size t n) | |
| Копирует не более чем n символов строки s2 в массив s1. Возвращает значение s1 | |
| char *strcat (char *sl, const char *s2) | |
| Объединяет строку s2 со строкой массива s1. Первый символ строки s2 переписывает символ NULL строки s1. Возвращает значение s1. | |
| char strncat (char *sl, const char *s2, size t n) | |
| Объединяет не более чем n символов строки s2 со строкой массива s1. Первый символ строки s2 переписывает символ NULL строки s1. Возвращает значение s1. | |
Рис. 17. Функции для выполнения операций над строками
Из библиотеки обработки строк
Функция strcpy копирует второй аргумент — строку — в первый аргумент — массив символов, который должен иметь достаточный размер, чтобы запомнить строку и ограничивающий символ NULL, который также копируется. Функция strncpy эквивалентна strcpy за исключением того, что strncpy задает число символов, которые необходимо скопировать из строки в массив. Функция strncpy не копирует ограничивающий символ NULL второго аргумента, если не выполнено следующее условие: число копируемых символов превышает длину строки, по меньшей мере, на единицу. Например, если вторым аргументом является строка "test", то ограничивающий символ NULL записывается, только если значение третьего аргумента функции составляет не менее 5 (4 символа в строке "test" плюс 1 символ NULL). Если значение третьего аргумента больше 5, то символы NULL добавляются в массив до тех пор, пока общее число записанных символов не станет равным числу, заданному в третьем аргументе.
Программа, приведенная на рис. 18, вызывает функцию strcpy для копирования всей строки из массива х в массив у и первых 14 символов из массива х в массив z. Символ NULL ('\0') добавляется в массив z в отдельном операторе, поскольку обращение программы к функции strcpy не копирует нулевой символ (третий аргумент меньше длины строки второго аргумента).
Функция strcat выполняет объединение строк (конкатенацию): второго аргумента — строки — с первым аргументом — массивом символов, содержащим строку. Первый символ второго аргумента заменяет последний символ NULL строки первого аргумента.
Функция strncat выполняет объединение определенного числа символов из второй строки с первой строкой. Ограничивающий символ NULL добавляется к строке результата автоматически. Программа, приведенная на рис. 19, демонстрирует применение функций strcat и strncat.
/* Применение strcpy и strncpy */
#include <stdio.h>
#include <string.h>
main () {
char x[] = "Happy Birthday to You";
char у [25], z[15];
printf ("%s%s\n%s%s\n",
"The string in array x is: ", x,
"The string in array у is: ", strcpy (y, x));
strncpy(z, x, 14);
z[14] = '\0';
printf ("The string in array z is: %s\n", z);
return 0; }
Вывод на экран
The string in array x: Happy Birthday to You
The string in array y: Happy Birthday to You
The string in array z: Happy Birthday
Рис. 18. Применение strcpy и strncpy
/* Применение strcat и strncat */
#include <stdio.h>
#include <string.h>
main ()
{
char s1[20]= "Happy
char s2[] ="New Year";
char s3[40] = "";
printf ("s1 = %s\ns2 = %s\n", s1, s2);
printf ("strcat (si, s2) = %s\n",
strcat(sl, s2));
printf("strncat(s3, s1 6) = %s\n", strncat(s3, si, 6));
printf. ("strcat (s3, si) = %s\n", strcat (s3, si));
return 0; }
Вывод на экран
s1 = Happy
s2 = New Year
strncat(si, s2) = Happy New Year
strncat(s3, si, 6) = Happy
strcat(s3, si) = Happy Happy New Year
Рис. 19. Применение strcat и strncat
Функции сравнения из библиотеки обработки строк
Прототипы функций и краткое описание каждой из них приведены на рис. 20.
| Прототип | Описание функции |
| int strcmp (const char *s1, const char *s2) | |
| Сравнивает строку s1 со строкой s2. Функция возвращает 0, значение меньше 0 или больше 0, если s1 соответственно равна, меньше или больше s2. | |
| int strncmp (const char * s1, const char *s2, size t n) | |
| Сравнивает до n символов строки s1 со строкой s2. функция возвращает 0, значение меньше 0 или больше 0, если s1 соответственно равна, меньше или больше чем s2. | |
Рис. 20. Функции сравнения строк из библиотеки обработки строк
Программа, показанная на рис. 21, сравнивает три строки, используя функции strcmp и strncmp. Функция strcmp сравнивает символ за символом первый аргумент-строку со вторым аргументом-строкой. Функция возвращает 0, если строки равны, отрицательное значение, если первая строка меньше второй, и положительное значение, если первая строка больше второй. Функция strncmp эквивалентна функции strcmp, за исключением того, что strncmp сравнивает до n символов в строках. Функция strncmp не сравнивает символы, идущие за символом NULL. Эта программа печатает целое значение, возвращаемое при каждом вызове функции.
/* Применение strcmp и strncmp.*/
#include <stdio.h>
#include <string.h>
main () {
char *sl = "Happy New Year";
char *s2 = "Happy New Year";
char *s3 = "Happy Holidays";
printf ("%s%s\n%s%s\n%s%s\n\n%s%2d\n%s%2d\n%s%2d\n\n", "s1 = ", s1, "s2 = ", s2, "s3 = ", s3, "strcmp(s1, s2) = ", strcmp(s1, s2), "strcmp(sl, s3) = ", strcmp (s1, s3), "strcmp (s3, s1) = ", strcmp(s3, s1));
printf("%s%2d\n%s%2d\n%s%2d\n",
"strncmp(sl, s3, 6) = ", strncmp(sl, s3, 6), "strncmp(si, s3, 7) = ", strncmp(si, s3, 7), "strncmp(s3, si, 7) = ", strncmp(s3, si, 7));
return 0; }
Вывод на экран
s1 = Happy New Year
s2 = Happy New Year
s3 = Happy Holidays
strcmp(si, s2) = 0
strcmp(si, s3) = 1
strcmp(s3, si) = -1
strncmp(si, s3, 6) = 0
strncmp(si, s3, 7) = 1
strncmp(s3, si, 7) = -1
Рис. 21. Применение strcmp и strncmp
Внутренние числовые коды, использующиеся для представления символов, могут отличаться на различных компьютерах.
|
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
© cyberpedia.su 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!