No Image

Функция strcpy в си

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

strcpy – копирование строк.

#include
char *strcpy (char *destination, const char *source);

destination – указатель на строку, в которую будут скопированы данные.
source – указатель на строку источник копируемых данных.

Функция возвращает указатель на строку, в которую скопированы данные.

Функция strcpy копирует данные из строки, на которую указывает аргумент source, в строку, на которую указывает аргумент destination, пока не встретится символ конца строки (нулевой символ). Копирование производится вместе с символом конца строки.

Если строки перекрываются, результат копирования будет не определен.

В примере создается массив src, содержащий строку «первая строка» и строку «вторая строка», и пустой массив dst. Затем из массива src копируется одна строка в массив dst. Затем массивы src и dst выводятся на консоль.

Вывод в консоль:

src: первая строка вторая строка
dst: первая строка

Содержание

Прототип функции [ править | править код ]

Прототип, описанный в заголовочном файле string.h :

  • dst — указатель на буфер назначения.
  • src — указатель на исходную строку.

Возвращаемое значение [ править | править код ]

Функция возвращает значение dst.

Пример использования [ править | править код ]

Безопасность [ править | править код ]

Поскольку функция не проверяет длину строки и размер буфера, она не должна использоваться для работы с данными, размер которых неизвестен, во избежание переполнения буфера dst .

Вместо strcpy рекомендуется использовать стандартную функцию strncpy (добавляя нуль-терминатор при необходимости!) или не входящие в стандарт функции strlcpy или strncpy_s .

Копирует строку. Copies a string. Это версии функций strcpy, wcscpy, _mbscpy с усовершенствованной безопасностью, как описано в разделе Функции безопасности в CRT. These versions of strcpy, wcscpy, _mbscpy have security enhancements, as described in Security Features in the CRT.

_mbscpy_s и _mbscpy_s_l нельзя использовать в приложениях, которые выполняются в среда выполнения Windows. _mbscpy_s and _mbscpy_s_l cannot be used in applications that execute in the Windows Runtime. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows. For more information, see CRT functions not supported in Universal Windows Platform apps.

Читайте также:  Do not turn off target odin

Синтаксис Syntax

Параметры Parameters

dest dest
Расположение строкового буфера назначения. Location of the destination string buffer.

dest_size dest_size
Размер целевого буфера строки в единицах char для узких и многобайтовых функций, а также единиц wchar_t для расширенных функций. Size of the destination string buffer in char units for narrow and multi-byte functions, and wchar_t units for wide functions. Это значение должно быть больше нуля и не больше RSIZE_MAX. This value must be greater than zero and not greater than RSIZE_MAX.

src src
Исходная строка, завершающаяся нулем. Null-terminated source string buffer.

locale locale
Используемый языковой стандарт. Locale to use.

Возвращаемое значение Return Value

Ноль в случае успешного выполнения; в противном случае — код ошибки. Zero if successful; otherwise, an error.

Условия ошибок Error Conditions

dest dest dest_size dest_size src src Возвращаемое значение Return value Содержимое конечного объекта Contents of dest
NULL NULL Любое действие any Любое действие any EINVAL EINVAL не изменено not modified
Любое действие any Любое действие any NULL NULL EINVAL EINVAL конечный адрес [0] задано значение 0 dest[0] set to 0
Любое действие any 0 или слишком мал 0, or too small Любое действие any ERANGE ERANGE конечный адрес [0] задано значение 0 dest[0] set to 0

Примечания Remarks

Функция strcpy_s копирует содержимое в адрес src, включая завершающий символ null, в расположение, указанное в параметре dest. The strcpy_s function copies the contents in the address of src, including the terminating null character, to the location that’s specified by dest. Строка назначения должна быть достаточно велика для сохранения исходной строки и завершающего нуля. The destination string must be large enough to hold the source string and its terminating null character. Поведение strcpy_s не определено, если исходная и Целевая строки перекрываются. The behavior of strcpy_s is undefined if the source and destination strings overlap.

Читайте также:  Icloud вход в хранилище с айфона

wcscpy_s — это версия strcpy_sдля расширенных символов, а _mbscpy_s — многобайтовая версия. wcscpy_s is the wide-character version of strcpy_s, and _mbscpy_s is the multibyte-character version. Аргументы wcscpy_s — это строки расширенных символов; _mbscpy_s и _mbscpy_s_l — это строки многобайтовых символов. The arguments of wcscpy_s are wide-character strings; those of _mbscpy_s and _mbscpy_s_l are multibyte-character strings. В остальном эти функции ведут себя одинаково. These functions behave identically otherwise. _mbscpy_s_l идентичен _mbscpy_s , за исключением того, что он использует переданный параметр языкового стандарта вместо текущего языкового стандарта. _mbscpy_s_l is identical to _mbscpy_s except that it uses the locale parameter passed in instead of the current locale. Для получения дополнительной информации см. Locale. For more information, see Locale.

Если dest или src является пустым указателем или если размер строки назначения dest_size слишком мал, вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров. If dest or src is a null pointer, or if the destination string size dest_size is too small, the invalid parameter handler is invoked, as described in Parameter Validation. Если выполнение может быть продолжено, эти функции возвращают еинвал и задают для параметра « еинвал », если dest или src является пустым указателем, и возвращают ERANGE и применяют значение ERANGE , если Строка назначения слишком мала. If execution is allowed to continue, these functions return EINVAL and set errno to EINVAL when dest or src is a null pointer, and they return ERANGE and set errno to ERANGE when the destination string is too small.

После успешного выполнения конечная строка всегда завершается нулем. Upon successful execution, the destination string is always null-terminated.

Читайте также:  Beeline интернет настройка подключения

В C++ использование данных функций упрощено наличием шаблонных перегрузок, которые могут автоматически определять длину буфера, а также автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами. In C++, use of these functions is simplified by template overloads that can infer buffer length automatically so that you don’t have to specify a size argument, and they can automatically replace older, less-secure functions with their newer, more secure counterparts. Дополнительные сведения см. в разделе Secure Template Overloads. For more information, see Secure Template Overloads.

Версии отладочной библиотеки этих функций сначала заполняют буфер 0xFE. The debug library versions of these functions first fill the buffer with 0xFE. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold. To disable this behavior, use _CrtSetDebugFillThreshold.

Сопоставления подпрограмм обработки обычного текста Generic-Text Routine Mappings

Подпрограмма TCHAR.H TCHAR.H routine _UNICODE и _MBCS не определены _UNICODE & _MBCS not defined _MBCS определено _MBCS defined _UNICODE определено _UNICODE defined
_tcscpy_s _tcscpy_s strcpy_s strcpy_s _mbscpy_s _mbscpy_s wcscpy_s wcscpy_s

Требования Requirements

Подпрограмма Routine Обязательный заголовок Required header
strcpy_s strcpy_s
wcscpy_s wcscpy_s или or
_mbscpy_s _mbscpy_s

Эти функции относятся только к Microsoft. These functions are Microsoft-specific. Дополнительные сведения о совместимости см. в разделе Совместимость. For additional compatibility information, see Compatibility.

Пример Example

В отличие от кода качества производства, этот пример вызывает безопасные строковые функции без проверки на наличие ошибок: Unlike production quality code, this sample calls the secure string functions without checking for errors:

При создании C++ кода версии шаблонов могут быть проще в использовании. When building C++ code, the template versions may be easier to use.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector