Strcpy

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

Прототип функції

[ред. | ред. код]

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

char *strcpy (char * destination, const char * source);

Значення, що повертається

[ред. | ред. код]

Функція повертає значення destination.

Приклад використання

[ред. | ред. код]
#include <string.h>                      /* для strcpy() */
#include <stdio.h>                       /* для printf() */

int main()
{
   char *str = "string example";        // деякий приклад рядка
   char buf[32] = "";                   // буфер розміром більше ніж рядок str, спочатку містить порожній рядок

   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"

Безпека

[ред. | ред. код]

Оскільки функція не перевіряє довжину рядка та розмір буфера, вона не повинна використовуватися для роботи з даними, розмір яких невідомий, щоб уникнути переповнення буфера destination.

Замість strcpy рекомендується використовувати стандартну функцію strncpy ( додаючи нуль-термінатор при необхідності! ) або функції strlcpy або strncpy_s, що не входять до стандарту

Посилання

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