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));          // очистка буфера для вывода.
   // Альтернативный способ, если не требуется равенство нулю всех байтов:
   // *buf = '\0';
 
   printf("строка: \"%s\"\n", str);
   printf("буфер перед копированием: \"%s\"\n", buf);
 
   strcpy(buf, str);
 
   printf("буфер после копирования: \"%s\"\n", buf);
 
   return 0;
}

Вывод:

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

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

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

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

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

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