English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
دالة مكتبة C int vfprintf(FILE *stream, const char *format, va_list arg) إرسال输出来 إلى تيار stream باستخدام قائمة المعلمات.
إليك إعلان دالة vfprintf().
int vfprintf(FILE *stream, const char *format, va_list arg)
specifier (الوصف) | إخراج |
---|---|
c | حرف |
d أو i | عدد عشري سالب |
e | نظام العدد العلمي باستخدام حرف e (الجزء العددي والمعامل) |
E | نظام العدد العلمي باستخدام حرف E (الجزء العددي والمعامل) |
f | عدد عشري عكسي |
g | اختيار التمثيل المناسب بين %e أو %f تلقائيًا |
G | اختيار التمثيل المناسب بين %E أو %f تلقائيًا |
o | عشري سالب |
s | النص المكون من حرف |
u | عدد عشري |
x | عدد عشري غير سالب |
X | عدد عشري غير سالب (أحرف كبيرة) |
p | عنوان الإشارة |
n | لا يوجد مخرج |
% | حرف |
flags (العلامات) | الوصف |
---|---|
- | تحديد التوجيه إلى اليسار داخل عرض الحقل المحدد، بشكل افتراضي يتم التوجيه إلى اليمين (انظر إلى ملاحظة width الفرعية). |
+ | إجبار على عرض إشارة إيجابية أو سالبة (+ أو -) أمام النتيجة، أي سيتم عرض إشارة إيجابية أمام العدد الإيجابي. بشكل افتراضي، سيتم عرض إشارة سالبة أمام العدد السالب فقط. |
(space) | إذا لم يتم كتابة أي رمز، سيتم إدراج فراغ أمام القيمة. |
# | عند استخدامه مع o، x أو X، سيتم عرض 0، 0x أو 0X أمام القيمة غير الصفرية. عند استخدامه مع e، E، أو f، سيتم إجبار على إخراج نقطة عشرية، حتى لو لم يكن هناك أرقام بعد ذلك. بشكل افتراضي، إذا لم يكن هناك أرقام بعد ذلك، لن يتم عرض النقطة العشرية. عند استخدامه مع g أو G، فإن النتيجة تكون مثل استخدام e أو E، ولكن لن يتم إزالة الصفر النهائي. |
0 | وضع صفر (0) على يسار الرقم المحدد للملء بدلاً من الفراغ (انظر إلى ملاحظة width الفرعية). |
width (العرض) | الوصف |
---|---|
(number) | عدد الحروف التي سيتم إخراجها. إذا كانت القيمة المكتوبة أقصر من هذا الرقم، سيتم تعبئة النتيجة بمقدار الترقيم الأولي. إذا كانت القيمة المكتوبة أطول من هذا الرقم، لن يتم قطع النتيجة. |
* | العرض لم يتم تحديده في نطاق format، ولكنه سيتم وضع كمعامل عدد صحيح إضافي قبل المعامل الذي سيتم تشكيله. |
.precision (الدقة) | الوصف |
---|---|
.number | للمعرفات الصحيحة للعدد (d،i،o،u،x،X): تحديد دقة يحدد عدد الأرقام الأدنى الذي يجب كتابته. إذا كان القيمة المكتوبة أقصر من هذا الرقم، سيتم تعبئة النتيجة بمقدار الترقيم الأولي. إذا كانت القيمة المكتوبة أطول من هذا الرقم، لن يتم قطع النتيجة. الدقة 0 تعني عدم كتابة أي حروف. للنوع e و E و f: عدد الأرقام بعد نقطة العشرية التي سيتم إخراجها. للنوع g و G: عدد الأرقام الفعالة التي سيتم إخراجها. للنوع s: عدد الحروف التي سيتم إخراجها. للنوع c: لا يؤثر. عند عدم تحديد أي دقة، يتم تعيين القيمة الافتراضية إلى 1. إذا لم يتم تحديدها مع قيمة صريحة، يتم افتراضها كـ 0. |
.* | الدقة لم تُحدد في سلسلة النص format، ولكن سيتم وضعها كمعامل إضافي كامل قبل المعاملات التي سيتم تنسيقها. |
length (الطول) | الوصف |
---|---|
h | تُفسر المعلمة كـ نوع قصير أو نوع غير معين قصير (يُستخدم فقط مع وسم معرفات الأعداد الصحيحة: i،d،o،u،x و X). |
l | تُفسر المعلمة كـ نوع طويل أو نوع طويل غير معين، ويُستخدم مع وسم معرفات الأعداد الصحيحة (i،d،o،u،x و X) وكذلك وسم c (يعبر عن حرف عريض) و s (يعبر عن سلسلة من الحروف العريضة). |
L | تُفسر المعلمة كـ نوع طويل الثمانية (يُستخدم فقط مع وسم معرفات الأعداد العشرية: e،E،f،g و G). |
إذا كانت النتيجة ناجحة، فإنها تعود عدد الحروف المكتوبة، وإلا تعود رقم سلبي.
إليك مثالًا على استخدام vfprintf()
#include <stdio.h> #include <stdarg.h> void WriteFrmtd(FILE *stream, char *format, ...) { va_list args; va_start(args, format); vfprintf(stream, format, args); va_end(args); {} int main () { FILE *fp; fp = fopen("file.txt","w"); WriteFrmtd(fp, "This is just one argument %d \n", 10); fclose(fp); return(0); {}
دعونا نحضر ونشغل البرنامج المذكور أعلاه، مما سيفتح الملف في الدليل الحالي file.txt، وكتابة النص التالي:
هذا مجرد دليل واحد 10
الآن دعونا نستخدم البرنامج التالي لعرض محتويات الملف المذكور أعلاه:
#include <stdio.h> int main () { FILE *fp; int c; fp = fopen("file.txt","r"); while(1) { c = fgetc(fp); if( feof(fp) ) { break ; {} printf("%c", c); {} fclose(fp); return(0); {}