English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
دالة مكتبة C int vsprintf(char *str, const char *format, va_list arg) إرسال输出来 إلى نص باستخدام قائمة المعلمات.
هذا هو بيان دالة vsprintf().
int vsprintf(char *str, 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 (علامات) | الوصف |
---|---|
- | توجيه الحقل المحدد إلى اليسار، بشكل افتراضي يتم توجيهه إلى اليمين (انظر شرح sub-suffix width). |
+ | إجبار على عرض إشارة إضافية أو ناقصية (+ أو -) قبل النتيجة، أي سيتم عرض إشارة + أمام الأرقام الإيجابية. بشكل افتراضي، سيتم عرض إشارة - فقط أمام الأرقام السلبية. |
(مسافة) | إذا لم يتم كتابة أي رمز، سيتم إدراج مسافة أمام القيمة. |
# | عند استخدامه مع o، x أو X specifier، سيتم عرض 0، 0x أو 0X أمام القيم غير الصفرية. عند استخدامه مع e، E و f، سيتم إجبار النتيجة على تحتوي على نقطة عشرية، حتى لو لم يكن هناك أي أرقام بعد النقطة العشرية. بشكل افتراضي، إذا لم يكن هناك أي أرقام بعد النقطة العشرية، لن يتم عرض النقطة العشرية. عند استخدامه مع g أو G، النتيجة ستكون نفسها كما عند استخدامه مع e أو E، ولكن لن يتم إزالة الصفر في نهاية. |
0 | وضع صفر (0) على يسار الرقم المحدد للملء padding، بدلاً من المسافات (انظر شرح sub-suffix width). |
عرض (width) | الوصف |
---|---|
(رقم) | عدد الأحرف التي سيتم إخراجها. إذا كان القيمة المخرجة أقصر من هذا الرقم، سيتم تعبئة النتيجة بالمسافات. إذا كانت القيمة المخرجة أطول من هذا الرقم، لن يتم قطع النتيجة. |
* | عرض في سلسلة format لم يتم تحديده، ولكن سيتم وضع قيمة الصفحة الكاملة كمعامل إضافي قبل المعاملات التي سيتم تنسيقها. |
.dقة (الدقة) | الوصف |
---|---|
.number | بالنسبة لنوع الأعداد الصحيحة (d،i،o،u،x،X): يحدد الدقة عدد الأرقام التي سيتم كتابتها من القيمة. إذا كان العدد القابل للكتابة أقل من هذا الرقم، سيتم تعبئة النتيجة بمقدمات صفر. إذا كان العدد القابل للكتابة أطول من هذا الرقم، لن يتم قطع النتيجة. إذا كانت الدقة 0، فإنه لا يتم كتابة أي حرف. بالنسبة لنوع e و E و f: عدد الأرقام بعد نقطة العشرية. بالنسبة لنوع g و G: عدد الأرقام الممكنة التي سيتم إخراجها. بالنسبة لنوع s: عدد الأحرف التي سيتم إخراجها. بشكل افتراضي، سيتم إخراج جميع الأحرف حتى تُواجه حرف النهاية الـ نود. بالنسبة لنوع c: لا يؤثر على أي شيء. عند عدم تحديد أي دقة، تكون القيمة الافتراضية 1. إذا لم تُحدد بوضوح، يتم افتراضها كـ 0. |
.* | الدقة لم تُحدد في سلسلة التنسيق format، ولكن سيتم وضعها كمعامل إضافي كامل قبل المعامل الذي سيتم تنسيقه. |
الطول (الطول) | الوصف |
---|---|
h | يفسر المعامل كعدد قصير أو عدد قصير غير سالب (يستخدم فقط في وصف الأعداد الصحيحة: i،d،o،u،x و X). |
l | يفسر المعامل كعدد طويل أو عدد طويل غير سالب، ويستخدم في وصف الأعداد الصحيحة (i،d،o،u،x و X) وأيضاً في وصف c (يُمثل حرف واسع) و s (يُمثل سلسلة من الحروف الواسعة). |
L | يفسر المعامل كعدد ثنائي طويل (يستخدم فقط في وصف الأعداد العشرية: e،E،f،g و G). |
إذا كانت النتيجة ناجحة، فإنها تعود عدد الأحرف المكتوبة، وإلا تعود قيمة سلبية.
هذا المثال يوضح استخدام وظيفة vsprintf().
#include <stdio.h> #include <stdarg.h> char buffer[80]; int vspfunc(char *format, ...) { va_list aptr; int ret; va_start(aptr, format); ret = vsprintf(buffer, format, aptr); va_end(aptr); return(ret); } int main() { int i = 5; float f = 27.0; char str[50] = "oldtoolbag.com"; vspfunc("%d %f %s", i, f, str); printf("%s\n", buffer); return(0); }
لنقوم بترميز وتشغيل البرنامج أعلاه، مما سيؤدي إلى نتائج التالي:
5 27.000000 oldtoolbag.com