English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تدریس پایه زبان C

کنترل جریان زبان C

الوظائف في لغة C

العدد في لغة C

الإشارات في لغة C

النصوص في لغة C

C ساختارهای زبان C

C زبان فایل

C دیگر

دليل C لغة البرمجة

استخدام وظيفة مكتبة C vprintf() ومثال

مكتبة C القياسية - <stdio.h>

وظيفة مكتبة C int vprintf(const char *format, va_list arg) إرسال输出来 إلى الخروج القياسي stdout باستخدام قائمة الإعدادات.

الإعلان

هذا هو إعلان vprintf() function.

int vprintf(const char *format, va_list arg)

الإعدادات

  • format -- هذا نص، يحتوي على النص الذي يجب كتابته إلى الخروج القياسي stdout. يمكن أن يحتوي على علامات format المدمجة، التي يمكن استبدالها بالقيم المحددة في الفواصل المضافة، وتكون مformatted حسب الحاجة. خصائص علامة format هي %[flags][width][.diameter][length]specifier،والمفهوم كما يلي:
specifier (الوصف)العرض
cحرف
d أو iعدد عشري سالب
eاستخدام النظام العشري العلمي (الرقم والمعامل) باستخدام حرف e
Eاستخدام النظام العشري العلمي (الرقم والمعامل)
fعدد عشري عادي
gاختيار التمثيل المناسب بين %e أو %f تلقائيًا
Gاختيار التمثيل المناسب بين %E أو %f تلقائيًا
oعشري سالب
sنص حرفي
uعدد عشري غير سالب
xعدد عشري غير سالب
Xعدد عشري غير سالب (بالأحرف الكبيرة)
pعنوان السهم
nلا يتم عرض أي شيء
%حرف

flags (العلامات)الوصف
-الترتيب الأيسر داخل عرض الحقل المحدد، بشكل افتراضي هو الترتيب الأيمن (ver also the width sub-suffix).
+إجبار على عرض إشارة إضافية أو ناقصية (+ أو -) أمام النتيجة، أي سيتم عرض إشارة (+) أمام الأرقام الإيجابية. بشكل افتراضي، سيتم عرض إشارة (-) فقط أمام الأرقام السلبية.
(مسافة)إذا لم يتم كتابة أي رمز، سيتم إدراج مسافة أمام القيمة.
#عند استخدامه مع o، x أو X، سيتم عرض 0، 0x أو 0X أمام القيم غير الصفرية.
عند استخدامه مع e، E أو f، سيتم إجبار النتيجة على أن تحتوي على نقطة عشرية، حتى لو لم يكن هناك أي أرقام بعد النقطة العشرية. بشكل افتراضي، لن يتم عرض النقطة العشرية إذا لم يكن هناك أي أرقام بعد النقطة العشرية.
عند استخدامه مع g أو G، تكون النتيجة نفسها كما عند استخدامه مع e أو E، ولكن لن يتم إزالة الصفر في نهاية النتيجة.
0ضع صفر (0) على يسار الرقم المحدد للملء (ver also the width sub-suffix).

عرض (العرض)الوصف
(رقم)أقل عدد من الحروف التي يجب عرضها. إذا كان القيمة الم输出的 أقل من هذا الرقم، سيتم تعبئة النتيجة بالمسافات. إذا كان القيمة الم输出的 أطول من هذا الرقم، لن يتم قطع النتيجة.
*العرض لم يُحدد في نص التنسيق، ولكن سيتم وضعها كمعطى عدد إضافي قبل المعطى المراد تنسيقه.

.dقة (الدقة)الوصف
.numberللأرقام (d،i،o،u،x،X): تحدد الدقة عدد الأرقام التي يجب كتابتها في العدد. إذا كان العدد أقصر من هذا الرقم، سيتم تعبئة النتيجة بمقدار أكبر من صفر. إذا كان العدد أطول من هذا الرقم، لن يتم قطع النتيجة. إذا كانت الدقة 0، فإنها تعني عدم كتابة أي حرف.
لنوع e و E و f: عدد الأرقام العشرية التي يجب طباعتها بعد نقطة العدد.
لنوع g و G: عدد الأرقام المفعلة التي يجب طباعتها.
لنوع s: عدد الأحرف القصوى التي يجب طباعتها. في النسخة الافتراضية، سيتم طباعة جميع الأحرف حتى وصول نهاية السلسلة من الأحرف المفردة.
لنوع c: لا يؤثر.
عند عدم تحديد أي دقة، فإن القيمة الافتراضية هي 1. إذا لم يُحدد عند تحديدها مع قيمة واضحة، يتم افتراضها كـ 0.
.*الدقة لم تُحدد في نص التنسيق، ولكن سيتم وضعها كمعطى عدد إضافي قبل المعطى المراد تنسيقه.

الطول (الطول)الوصف
hيُفسر المعطى كطول قصير أو غير معكوس قصير (يُستخدم فقط في وصف المعطيات الكاملة: i،d،o،u،x و X).
lيُفسر المعطى كطول كامل أو طويل غير معكوس، ويُستخدم في وصف المعطيات الكاملة (i،d،o،u،x و X) ووصف الرمز c (مثل حرف واسع) ووصف الرمز s (مثل نص واسع).
Lيُفسر المعطى كطول دقيق ثنائي (يُستخدم فقط في وصف المعطيات العشوائية: e،E،f،g و G).
  • الرمز -- يعبر عن عنصر قائمة المعطيات المتغيرة. يجب على مكتبة <stdarg> أن تُقيد هذا الماكرو va_start.

القيمة المعدة

إذا كانت النتيجة ناجحة، فإنها تعود عدد الحروف المكتوبة، وإلا تعود عدد سلبي.

مثال على الخط

يظهر هذا المثال استخدام وظيفة vprintf().

مثال على الخط

#include <stdio.h>
#include <stdarg.h>

void WriteFrmtd(char *format, ...)
{
   va_list args;
   
   va_start(args, format);
   vprintf(format, args);
   va_end(args);
}

int main ()
{
   كتابةWriteFrmtd("%d متغير معطى\n", 1);
   كتابةWriteFrmtd("%d متغير %s\n", 2, "معطيات");
   
   return(0);
}

لنقوم بترميز وتشغيل البرنامج المذكور أعلاه، وسيكون الناتج التالي:

متغير متعدد
2 متغيرات متعددة

مكتبة C القياسية - <stdio.h>