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.