logo

وظيفة snprintf () في C

في هذا القسم، سنناقش الدالة snprintf() في لغة البرمجة C. snprintf هي وظيفة مكتبة محددة مسبقًا لملف الرأس stdio.h، والتي تعيد توجيه إخراج وظيفة printf() القياسية إلى مخازن مؤقتة أخرى.

يتم استخدام الدالة snprint() لتنسيق السلاسل المعطاة في سلسلة من الأحرف أو القيم في منطقة المخزن المؤقت. تحتوي الدالة snprintf() على وسيطة 'n' تمثل الحد الأقصى لعدد الأحرف، بما في ذلك الحرف الفارغ، المخزن في منطقة المخزن المؤقت.

تقوم الدالة snprintf أيضًا بإرجاع عدد الأحرف التي تم إدراجها أو كتابتها في المخزن المؤقت. ومع ذلك، يتم إرجاع هذه الأحرف أو عرضها بواسطة الدالة printf() في عبارة الطباعة أو الأحرف الموجودة في ملف رأس stdout.

وظيفة snprintf () في C

ملاحظة: تقوم الدالة snprintf() بإدراج حرف فارغ في نهاية الإخراج الناتج والذي يتم حسابه أيضًا كحجم المخزن المؤقت. علاوة على ذلك، المخزن المؤقت عبارة عن مصفوفة تقوم بتخزين عناصر نوع الحرف فقط، وليس في نوع السلسلة.

بناء جملة الدالة snprintf() في C

فيما يلي بناء جملة الدالة snprintf() في لغة البرمجة c.

 int snprintf (char *str, size_t size, const char *format, ?); 

حدود:

شارع : إنه مخزن مؤقت لصفيف نوع الحرف.

مقاس : يحدد الحد الأقصى لعدد الأحرف التي يمكن تخزينها في المخزن المؤقت.

شكل : في لغة C، تحدد السلسلة تنسيقًا يحتوي على نفس نوع المواصفات التي تحددها الدالة printf() في ملف الرأس stdio.h.

…: إنها معلمة أو وسيطة اختيارية (…).

قيم الإرجاع:

تقوم الدالة snprintf() بإرجاع عدد الأحرف أو القيم التي تم كتابتها أو تخزينها لمخزن مؤقت كبير بما فيه الكفاية دون تضمين حرف الإنهاء الخالي. وإذا كانت الأحرف المكتوبة أكبر من حجم المخزن المؤقت، فإنها ترجع قيمة سالبة. وإذا كان حجم المخزن المؤقت صغيرًا جدًا، فسيتم اقتطاع السلسلة المحددة أو تقليلها إلى حجم المخزن المؤقت.

مثال 1: برنامج لتوضيح وظيفة snprintf() في لغة C

لنقم بإنشاء برنامج للتحقق من حجم المخزن المؤقت وإرجاع عدد الأحرف التي تم إدخالها إلى المخزن المؤقت باستخدام وظيفة snprintf() في لغة C.

 /* create an example to use the snprintf function in c. */ #include #include int main () { // declare and initialize the char variable char *r = 'Javatpoint.com'; char buf[100]; // define the size of character type buffer /* use the snprintf() function to return the no. of character founded in the buffer area */ int n = snprintf (buf, 34, '%s 
', r); // 34 represents the size of buffer to store max characters // display the string stored in the buffer and count each character of the buffer area. printf (' The given string is: %s 
 Count the stored character: %d 
', buf, n); return 0; } 

عندما نقوم بتنفيذ البرنامج أعلاه، فإنه ينتج الإخراج المحدد على شاشة وحدة التحكم.

 The given string is: Javatpoint.com Count the stored character: 16 

2اختصار الثانيتنفيذ

 The given string is: Javatpoint.com Count the stored character: -1 

نقوم الآن بتقليل الحد الأقصى لعدد أحرف الإدخال من 34 إلى 14، وهذه المرة، يُرجع رقمًا سالبًا، مما يشير إلى أن حجم المخزن المؤقت أقل من السلسلة المحددة.

مثال 2: برنامج لاستخدام الدالة snprintf() في لغة C

لنقم بإنشاء مثال لإدراج الحرف في المخزن المؤقت والعودة منه باستخدام وظيفة snprintf () في لغة البرمجة C.

 #include #include int main () { char buf[200]; // define the size of character type buffer int ret_val, buf_size = 55; char name[] = &apos;David&apos;; // define string int age = 19; // use the snprintf() function to return the no. of character found in buffer area ret_val = snprintf (buf, buf_size, &apos;Hello friend, My name is %s, and I am %d years old.&apos;, name, age); /* check ret_value should be greater than 0 and less than the size of the buffer (buf_size). */ if ( ret_val &gt; 0 &amp;&amp; ret_val <buf_size) { printf (' buffer is written successfully! 
 '); %s
', buf); no. of characters read: %d', ret_val); } else not completely filled or written. %s 
', the return value: 0; < pre> <p> <strong>When we execute the above program, it produces the given output on the console screen.</strong> </p> <pre> Buffer is written successfully! Hello friend, My name is David, and I am 19 years old. No. of characters read: 53 </pre> <p>In the above program, we declared the character type buffer buf[200], and the buf_size variable can insert the maximum characters is 55. If the given statement is in the defined range, the snprintf() function returns the total no. of characters read from the buffer. </p> <p> <strong>2<sup>nd</sup> execution</strong> </p> <pre> Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1 </pre> <p>When we define the buf_size as 35, the given statement is automatically truncated by the snprintf() function that returns a negative number (-1) and displays &apos;Buffer is not completely filled or written&apos;.</p> <hr></buf_size)>

في البرنامج أعلاه، أعلنا عن المخزن المؤقت لنوع الحرف buf[200]، ويمكن للمتغير buf_size إدراج الحد الأقصى للأحرف وهو 55. إذا كانت العبارة المحددة في النطاق المحدد، فستُرجع الدالة snprintf() إجمالي العدد. من الأحرف المقروءة من المخزن المؤقت.

2اختصار الثانيتنفيذ

 Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1 

عندما نحدد buf_size كـ 35، يتم اقتطاع العبارة المحددة تلقائيًا بواسطة الدالة snprintf() التي تُرجع رقمًا سالبًا (-1) وتعرض 'المخزن المؤقت غير ممتلئ أو مكتوب بالكامل'.