strcpy

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

strcpy — функция стандартной библиотеки языка программирования Си, для копирования нуль-терминированной строки (включая нуль-терминатор) в заданный буфер .

Содержание

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

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

char *strcpy (char *dst, const char *src);

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

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

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

#include <string.h>
#include <stdio.h>                       /* для printf() */
 
int main()
{
   char *str = "образец строки";
   char  buf[32];                        // буфер размером больше строки
 
   memset(buf, 0, sizeof(buf));          // очистка буфера для вывода
 
   printf("строка: \"%s\"\n\n", str);
   printf("буфер перед копированием: \"%s\"\n", buf);
 
   strcpy(buf, str);
 
   printf("буфер после копирования:  \"%s\"\n", buf);
 
   return 0;
}

Вывод: строка: "образец строки" буфер перед копированием: "" буфер после копирования: "образец строки"

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

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

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

Ссылки [править]

  • strcpy(1)  (англ.) — Мануал функции strcpy на сайте OpenBSD
  • C++ reference: cstring: strcpy  (англ.) — описание strcpy с примером.
  • strcpy()  (рус.) — реализация функции strcpy.