Scroll to navigation

strcpy(3) Library Functions Manual strcpy(3)

الاسم

stpcpy، strcpy، strcat - نسخ أو تسلسل سلسلة محارف

المكتبة

مكتبة سي المعيارية (libc، -lc)

موجز

#include <string.h>
char *stpcpy(char *restrict dst, const char *restrict src);
char *strcpy(char *restrict dst, const char *restrict src);
char *strcat(char *restrict dst, const char *restrict src);

متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

stpcpy():


منذ glibc 2.10:
_POSIX_C_SOURCE >= 200809L
قبل glibc 2.10:
_GNU_SOURCE

الوصف

تنسخ هذه الدوال السلسلة المحارف المشار إليها بواسطة src، إلى سلسلة محارف في المخزن المؤقت المشار إليه بواسطة dst. يتحمل المبرمج مسؤولية تخصيص مخزن مؤقت وجهة كبير بما يكفي، أي strlen(src) + 1. للفرق بين الدالتين، انظر قيمة الإرجاع.
تسلسل هذه الدالة سلسلة المحارف المشار إليها بواسطة src، بعد سلسلة المحارف المشار إليها بواسطة dst (مع الكتابة فوق بايت الصفر الختامي). المبرمج مسؤول عن تخصيص مخزن وجهة كبير بما يكفي، أي strlen(dst) + strlen(src) + 1.

قد يكون تنفيذ هذه الدوال كالتالي:


char *
stpcpy(char *restrict dst, const char *restrict src)
{

char *p;
p = mempcpy(dst, src, strlen(src));
*p = '\0';
return p; } char * strcpy(char *restrict dst, const char *restrict src) {
stpcpy(dst, src);
return dst; } char * strcat(char *restrict dst, const char *restrict src) {
stpcpy(dst + strlen(dst), src);
return dst; }

قيمة الإرجاع

ترجع هذه الدالة مؤشرًا إلى البايت الخالي الختامي للسلسلة المحارف المنسوخة.
ترجع هذه الدوال dst.

السمات

للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).

الواجهة السمة القيمة
stpcpy(), strcpy(), strcat() سلامة الخيوط MT-Safe

المعايير

POSIX.1-2008.
C11, POSIX.1-2008.

المعايير

POSIX.1-2008.
POSIX.1-2001، C89، SVr4، 4.3BSD.

تحذيرات

قد لا تتداخل سلسلتا المحارف src و dst.

إذا لم يكن المخزن الوجهة كبيرًا بما يكفي، فالسلوك غير محدد. انظر _FORTIFY_SOURCE في feature_test_macros(7).

يمكن أن تكون strcat() غير فعالة جدًا. اقرأ عن شلميئيل الرسام.

أمثلة

#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{

char *p;
char *buf1;
char *buf2;
size_t len, maxsize;
maxsize = strlen("Hello ") + strlen("world") + strlen("!") + 1;
buf1 = malloc(sizeof(*buf1) * maxsize);
if (buf1 == NULL)
err(EXIT_FAILURE, "malloc()");
buf2 = malloc(sizeof(*buf2) * maxsize);
if (buf2 == NULL)
err(EXIT_FAILURE, "malloc()");
p = buf1;
p = stpcpy(p, "Hello ");
p = stpcpy(p, "world");
p = stpcpy(p, "!");
len = p - buf1;
printf("[len = %zu]: ", len);
puts(buf1); // "Hello world!"
free(buf1);
strcpy(buf2, "Hello ");
strcat(buf2, "world");
strcat(buf2, "!");
len = strlen(buf2);
printf("[len = %zu]: ", len);
puts(buf2); // "Hello world!"
free(buf2);
exit(EXIT_SUCCESS); }

انظر أيضًا

strdup(3), string(3), wcscpy(3), string_copying(7)

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

15 يونيو 2024 صفحات دليل لينكس 6.9.1