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 з прикладом.