Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_13_Строки.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
572.42 Кб
Скачать

Объединение строк

Функция char* strcat (char* strDest, const char* source)

добавляет копию строки source, включая 0-символ, в конец строки strDest. Начальный символ строки source записывается поверх 0-символа в конце строки strDest. Функция возвращает указатель на начало результирующей строки strDest, которая заканчивается 0-символом и должна иметь размер не менее strlen(strDest) + strlen(source) + 1 байтов.

const int MAX = 80;

char s1[MAX] = "a";

char s2[MAX] = "b";

cout << strcat(s1,s2) << endl; //ab warning C4996: 'strcat' was declared deprecated

cout << s1 << endl; //ab

char* s;

cout << (s= strcat(s1, s2))<< endl;//abb warning C4996

Функция errno_t strcat_s (char *strDest, size_t sizeInBytes_strDest, const char *strSource);

возвращает 0 при успешном завершении и код ошибки – в противном случае.

Функция добавляет strSource к strDest и возвращает в результате строку с нулевым символом. 0-символ strSource заменяет 0-символ strDest. Поведение strcat_s не определено, если исходная и целевая строки накладываются.

код ошибки: EINVAL (22) – Invalid argument или ERANGE ( ) – Result too large.

char buf[16];

strcpy_s(buf, 16, "Start");

strcat_s(buf, 16, " End");

cout << buf << endl; // Start End

const int MAX = 80;

char s1[MAX] = "a";

char s2[MAX] = "b";

strcat_s(s1, MAX, s2);

cout << s1<< endl; //ab

Шаблонная функция (только в С++)

template <size_t size>

errno_t strcat_s(char (&strDes)[size], const char *source );

позволяет вызывать функцию в привычном виде:

const int MAX = 80;

char s1[MAX] = "a";

char s2[MAX] = "b";

strcat_s(s1,s2);

cout << s1 << endl; //ab

Функция char* strncat (char* strDest, const char* source, size_t count)

позволяет добавить не более чем count символов строки source в конец строки strDest и возвращает указатель на strDest. В строке strDest должно быть не менее strlen(strDest) + strlen(source) + 1 байтов.

int count =2;

const int MAX = 80;

char s1[MAX] = "aaa";

char s2[MAX] = "bb";

strncat(s1,s2,count); //warning C4996: 'strncat' was declared deprecated

cout << s1 << endl; //aaabb

char *s_res = strncat(s1,s2,count);

cout << s_res << endl; //aaabbbb

Функция errno_t strncat_s (char *strDest, size_t sizeInBytes_strDest, const char *strSource, size_t count)

возвращает 0 при успешном завершении и код ошибки – в противном случае.

Функция добавляет strSource к strDest и возвращает в результате строку с нулевым символом. Первоначальный 0-символ strSource перезаписывает завершающий 0-символ strDest. Поведение strcat_s не определено, если исходная и целевая строки накладываются.

код ошибки: EINVAL (22) – Invalid argument или ERANGE ( ) – Result too large.

const int MAX = 80;

int count =2;

char s1[MAX] = "a";

char s2[MAX] = "bbb";

strncat_s(s1, MAX, s2, count);

cout << s1<< endl; //abb

Шаблонная функция (только в С++)

template <size_t size>

errno_t strncat_s (char (&strDest)[size], const char *source , size_t count);

позволяет вызывать функцию в привычном виде:

int count=2;

const int MAX = 80;

char s1[MAX] = "aaa";

char s2[MAX] = "bbb";

strncat_s(s1,s2, count);

cout << s1 << endl; //aaabb