Strcpy
Материал из Википедии — свободной энциклопедии
- Правильный заголовок этой статьи — strcpy. Первая буква стала прописной из-за технических ограничений.
strcpy — функция стандартной библиотеки языка программирования Си, для копирования нуль-терминированной строки в заданный буфер.
Функция поддерживается всеми компиляторами Си, кроме MSVC++ 8.0[Источник?].
Содержание |
[править] Прототип функции
Прототип, описанный в заголовочном файле string.h
:
char *strcpy (char *dst, const char *src);
dst
— указатель(поинтер) на буфер назначения.src
— указатель(поинтер) на исходную строку.
[править] Возвращаемое значение
Функция возвращает значение dst.
[править] Пример использования
#include <string.h> #include <stdio.h> /* для printf() */ char buf[32]; // буфер размером больше строки int main() { char *str = "образец строки"; 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 - strcpy (англ.) — описание strcpy в руководстве программиста Linux.
- C++ reference: cstring: strcpy (англ.) — описание strcpy с примером.