strcpy
strcpy — функция стандартной библиотеки языка программирования Си для копирования нуль-терминированной строки (включая нуль-терминатор) в заданный буфер.
Прототип функции
[править | править код]Прототип, описанный в заголовочном файле string.h
:
char *strcpy (char *dst, const char *src);
Возвращаемое значение
[править | править код]Функция возвращает значение dst.
Пример использования
[править | править код]#include <string.h> #include <stdio.h> /* для printf() */ int main() { char *str = "string example"; char buf[32]; // буфер размером больше строки buf[0] = '\0'; // помечаем буфер как пустую строку, либо char buf[32] = ""; printf("string: \"%s\"\n", str); printf("buffer before copying: \"%s\"\n", buf); strcpy(buf, str); printf("buffer after copying: \"%s\"\n", buf); return 0; }
Вывод:
string: "string example" buffer before copying: "" buffer after copying: "string example"
Безопасность
[править | править код]Поскольку функция не проверяет длину строки и размер буфера, она не должна использоваться для работы с данными, размер которых неизвестен, во избежание переполнения буфера dst
.
Вместо strcpy
рекомендуется использовать стандартную функцию strncpy
(добавляя нуль-терминатор при необходимости!) или не входящие в стандарт функции strlcpy
или strncpy_s
.
Ссылки
[править | править код]- strcpy(1) (недоступная ссылка) (англ.) — Мануал функции
strcpy
на сайте OpenBSD - C++ reference: cstring: strcpy (англ.) — описание strcpy с примером.
- strcpy() (рус.) — реализация функции strcpy.