.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, Bruno Haible .\" Copyright 2014, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mbstowcs 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم mbstowcs \- تحويل سلسلة محارف متعددة البايت إلى سلسلة محارف عريضة .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBsize_t mbstowcs(\fPsize_t dsize; \fB wchar_t \fP\fIdest\fP\fB[restrict \fP\fIdsize\fP\fB], const char *restrict \fP\fIsrc\fP\fB,\fP \fB size_t \fP\fIdsize\fP\fB);\fP .fi .SH الوصف إذا لم يكن \fIdest\fP NULL، فحوِّل سلسلة المحارف متعددة البايت \fIsrc\fP إلى سلسلة محارف عريضة تبدأ عند \fIdest\fP. يُكتب على الأكثر \fIdsize\fP حرفًا عريضًا إلى \fIdest\fP. يجب أن تبدأ سلسلة المحارف في \fIsrc\fP في حالة الإزاحة الأولية. يمكن أن يتوقف التحويل لثلاثة أسباب: .IP \[bu] 3 تمت مصادفة تسلسل متعدد البايت غير صالح. في هذه الحالة، تُعاد \fI(size_t)\ \-1\fP. .IP \[bu] خُزنت \fIdsize\fP من المحارف العريضة غير L\[aq]\[rs]0\[aq] عند \fIdest\fP. في هذه الحالة، يُعاد عدد المحارف العريضة المكتوبة إلى \fIdest\fP، لكن حالة الإزاحة عند هذه النقطة تُفقد. .IP \[bu] حُوّلت سلسلة المحارف متعددة البايت بالكامل، بما في ذلك حرف النهاية الصفري (\[aq]\[rs]0\[aq]). في هذه الحالة، يُعاد عدد المحارف العريضة المكتوبة إلى \fIdest\fP، باستثناء حرف النهاية الصفري العريض. .P إذا كان \fIdest\fP فارغا (NULL)، يُتجاهل \fIdsize\fP، ويستمر التحويل كما هو موضح أعلاه، باستثناء أن المحارف العريضة المحولة لا تُكتب في الذاكرة، ولا يوجد حد للطول. .P لتجنب الحالة 2 أعلاه، يجب على المبرمج التأكد من أن \fIdsize\fP أكبر من أو يساوي \fImbstowcs(NULL,src,0)+1\fP. .P يجب على المبرمج التأكد من وجود مساحة لـ \fIdsize\fP من المحارف العريضة على الأقل في \fIdest\fP. .SH "قيمة الإرجاع" عدد المحارف العريضة التي تشكل الجزء المحول من سلسلة المحارف العريضة، دون تضمين حرف النهاية الصفري العريض. إذا تمت مصادفة تسلسل متعدد البايت غير صالح، تُعاد \fI(size_t)\ \-1\fP. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBmbstowcs\fP() T} سلامة الخيوط MT\-Safe .TE .SH الإصدارات توفر الدالة \fBmbsrtowcs\fP(3) واجهة أفضل لنفس الوظيفة. .SH المعايير C11, POSIX.1\-2008. .SH التاريخ POSIX.1\-2001، C99. .SH ملاحظات يعتمد سلوك \fBmbstowcs\fP() على فئة \fBLC_CTYPE\fP من الإعدادات المحلية الحالية. .SH أمثلة يوضح البرنامج أدناه استخدام \fBmbstowcs\fP()، بالإضافة إلى بعض دوال تصنيف المحارف العريضة. مثال على التشغيل هو التالي: .P .in +4n .EX $ ./t_mbstowcs de_DE.UTF\-8 Grüße! Length of source string (excluding terminator): 8 bytes 6 multibyte characters \& Wide character string is: Grüße! (6 characters) G alpha upper r alpha lower ü alpha lower ß alpha lower e alpha lower ! !alpha .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (mbstowcs.c) \& .EX #include #include #include #include #include #include \& int main(int argc, char *argv[]) { size_t mbslen; /* Number of multibyte characters in source */ wchar_t *wcs; /* Pointer to converted wide character string */ \& if (argc < 3) { fprintf(stderr, "Usage: %s \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& /* Apply the specified locale. */ \& if (setlocale(LC_ALL, argv[1]) == NULL) { perror("setlocale"); exit(EXIT_FAILURE); } \& /* Calculate the length required to hold argv[2] converted to a wide character string. */ \& mbslen = mbstowcs(NULL, argv[2], 0); if (mbslen == (size_t) \-1) { perror("mbstowcs"); exit(EXIT_FAILURE); } \& /* Describe the source string to the user. */ \& printf("Length of source string (excluding terminator):\[rs]n"); printf(" %zu bytes\[rs]n", strlen(argv[2])); printf(" %zu multibyte characters\[rs]n\[rs]n", mbslen); \& /* Allocate wide character string of the desired size. Add 1 to allow for terminating null wide character (L\[aq]\[rs]0\[aq]). */ \& wcs = calloc(mbslen + 1, sizeof(*wcs)); if (wcs == NULL) { perror("calloc"); exit(EXIT_FAILURE); } \& /* Convert the multibyte character string in argv[2] to a wide character string. */ \& if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) \-1) { perror("mbstowcs"); exit(EXIT_FAILURE); } \& printf("Wide character string is: %ls (%zu characters)\[rs]n", wcs, mbslen); \& /* Now do some inspection of the classes of the characters in the wide character string. */ \& for (wchar_t *wp = wcs; *wp != 0; wp++) { printf(" %lc ", (wint_t) *wp); \& if (!iswalpha(*wp)) printf("!"); printf("alpha "); \& if (iswalpha(*wp)) { if (iswupper(*wp)) printf("upper "); \& if (iswlower(*wp)) printf("lower "); } \& putchar(\[aq]\[rs]n\[aq]); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBmblen\fP(3), \fBmbsrtowcs\fP(3), \fBmbtowc\fP(3), \fBwcstombs\fP(3), \fBwctomb\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .