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.