Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2020-05-08 | 192 |
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
Внутренние числовые коды, использующиеся для представления символов, могут отличаться на различных компьютерах.
|
|
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!