strfmon(3)

الاسم
strfmon, strfmon_l - تحويل القيمة النقدية إلى سلسلة نصية

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

موجز
#include <monetary.h>

ssize_t strfmon(size_t size;
                char s[restrict size], size_t size,
                const char *restrict format, ...);
ssize_t strfmon_l(size_t size;
                char s[restrict size], size_t size, locale_t l,
                const char *restrict format, ...);

الوصف
الدالة strfmon() تُنسّق المبلغ النقدي المُحدد وفقًا للإعدادات المحلية الحالية ومواصفات التنسيق format وتضع النتيجة في مصفوفة المحارف s ذات size بايت.

الدالة strfmon_l() تؤدي نفس المهمة، لكنها تستخدم الإعدادات المحلية المُحددة بواسطة l. سلوك strfmon_l() غير مُعرّف إذا كان l هو كائن الإعدادات المحلية الخاص LC_GLOBAL_LOCALE (انظر duplocale(3)) أو لم يكن مقبض كائن إعدادات محلية صالحًا.

تُنسخ المحارف العادية في format إلى s دون تحويل. تُقدّم مُحددات التحويل بحرف '%'. مباشرة بعده يمكن أن يكون صفر أو أكثر من الأعلام التالية:

=f  يُستخدم المحرف أحادي البايت f كمحرف تعبئة عددي (ليُستخدم مع دقة يسرى، انظر أدناه). عندما لا يُحدد، يُستخدم محرف المسافة.

^   لا تستخدم أي محارف تجميع قد تكون مُعرّفة للإعدادات المحلية الحالية. افتراضيًا، التجميع مُفعّل.

( أو +
    العلم ( يُشير إلى أن المبالغ السالبة يجب أن تُحصر بين قوسين. العلم + يُشير إلى أن العلامات يجب أن تُعالج بالطريقة المبدئية، أي أن المبالغ تُسبق بإشارة الإعدادات المحلية، على سبيل المثال، لا شيء للإيجابي، "-" للسلبي.

!   احذف رمز العملة.

-   اضبط جميع الحقول إلى اليسار. المبدئي هو الضبط إلى اليمين.

بعد ذلك، قد يكون هناك عرض حقل: سلسلة محارف رقمية عشرية تُحدد عرض حقل أدنى بالبايت. المبدئي هو 0. نتيجة أصغر من هذا العرض تُحشى بمسافات (على اليسار، ما لم يُعطَ علم الضبط لليسار).

بعد ذلك، قد يكون هناك دقة يسرى من الشكل "#" متبوعة بسلسلة محارف رقمية عشرية. إذا كان عدد الأرقام على يسار محرف الأساس أصغر من هذا، تُحشى التمثيلية على اليسار بمحرف التعبئة العددي. لا تُحتسب محارف التجميع في عرض الحقل هذا.

بعد ذلك، قد يكون هناك دقة يمنى من الشكل "." متبوعة بسلسلة محارف رقمية عشرية. يُقرّب المبلغ المُنسّق إلى عدد الأرقام المُحدد قبل التنسيق. المبدئي مُحدد في عنصري frac_digits و int_frac_digits للإعدادات المحلية الحالية. إذا كانت الدقة اليمنى 0، لا يُطبع أي محرف أساس. (محرف الأساس هنا يُحدد بواسطة LC_MONETARY، وقد يختلف عن ذلك المُحدد بواسطة LC_NUMERIC.)

أخيرًا، يجب أن تنتهي مواصفات التحويل بمحرف تحويل. محارف التحويل الثلاثة هي

%   (في هذه الحالة، يجب أن تكون المواصفات بأكملها بالضبط "%%".) ضع محرف '%' في سلسلة النتيجة.

i   يُحوّل وسيط واحد من النوع double باستخدام تنسيق العملة الدولي للإعدادات المحلية.

n   يُحوّل وسيط واحد من النوع double باستخدام تنسيق العملة الوطني للإعدادات المحلية.

قيمة الإرجاع
تُرجع الدالة strfmon() عدد المحارف الموضوعة في المصفوفة s، دون تضمين البايت الختامي الصفري، بشرط أن تسع السلسلة، بما في ذلك البايت الختامي الصفري. وإلا، فإنها تضبط errno إلى E2BIG، وتُعيد -1، وتكون محتويات المصفوفة غير مُعرَّفة.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
strfmon() | سلامة الخيوط | المنطقة (locale) آمنة لتعدد المسالك (MT-Safe)
strfmon_l() | سلامة الخيوط | MT-Safe

المعايير
POSIX.1-2008.

التاريخ
POSIX.1-2001.

أمثلة
الاستدعاء

    strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
            1234.567, 1234.567);

يُخرج

    [€ **1234,57] [EUR **1 234,57]

في الإعداد المحلي nl_NL. تُنتج الإعدادات المحلية de_DE وde_CH وen_AU وen_GB

    [ **1234,57 €] [ **1.234,57 EUR]
    [ Fr. **1234.57] [ CHF **1'234.57]
    [ $**1234.57] [ AUD**1,234.57]
    [ £**1234.57] [ GBP**1,234.57]

انظر أيضًا
duplocale(3), setlocale(3), sprintf(3), locale(7)

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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