logo

פונקציית snprintf() ב-C

בחלק זה, נדון בפונקציה snprintf() בשפת התכנות C. ה-snprintf הוא פונקציית ספרייה מוגדרת מראש של קובץ הכותרת stdio.h, המפנה את הפלט של הפונקציה printf() הסטנדרטית למאגרים אחרים.

הפונקציה snprint() משמשת לעיצוב המחרוזות הנתונות לסדרה של תווים או ערכים באזור המאגר. הפונקציה snprintf() מכילה ארגומנט 'n' המייצג את המספר המרבי של תווים, כולל תו ה-null, המאוחסן באזור המאגר.

הפונקציה snprintf מחזירה גם את מספר התווים שהוכנסו או נכתבים למאגר. עם זאת, תווים אלה מוחזרים או מוצגים על ידי הפונקציה printf() במשפט print או תווים בקובץ הכותרת stdout.

פונקציית snprintf() ב-C

הערה: הפונקציה snprintf() מכניסה תו null לסוף הפלט המתקבל שנספר גם כגודל המאגר. יתר על כן, המאגר הוא מערך המאחסן רק אלמנטים מסוג תו, לא בסוג המחרוזת.

תחביר של הפונקציה snprintf() ב-C

להלן התחביר של הפונקציה snprintf() בשפת התכנות c.

repl ב-java
 int snprintf (char *str, size_t size, const char *format, ?); 

פרמטרים:

str : זהו מאגר מערך מסוג תווים.

גודל : הוא מגדיר את המספר המרבי של תווים שניתן לאחסן במאגר.

פוּרמָט : בשפת C, המחרוזת מגדירה פורמט שמכיל את אותו סוג של מפרטים כפי שהפונקציה printf() מגדירה בקובץ הכותרת stdio.h.

…: זהו פרמטר או ארגומנט אופציונלי (...).

java הוא ריק

ערכי החזרה:

הפונקציה snprintf() מחזירה את מספר התווים או הערכים שנכתבו או מאוחסנים עבור מאגר גדול מספיק מבלי לכלול את התו המסיים null. ואם התווים הכתובים גדולים מגודל המאגר, הוא מחזיר ערך שלילי. ואם גודל המאגר קטן מדי, המחרוזת הנתונה תקוצר או תקטן לגודל המאגר.

מערכי תכנות java

דוגמה 1: תוכנית להדגמת הפונקציה snprintf() ב-C

בואו ניצור תוכנית לבדיקת גודל המאגר ולהחזיר את מספר התווים Enter למאגר באמצעות הפונקציה 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)>

בתוכנית לעיל, הכרזנו על סוג התווים buffer 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) ומציגה 'המאגר לא מלא או כתוב לגמרי'.