כיצד להשתמש בפונקציית strncpy() ב-C++

Kyzd Lhstms Bpwnqzyyt Strncpy B C



ישנן פונקציות רבות ב-C++ להעתקת מחרוזות או תווים ממקום אחד לאחר, שהן strcpy, strncpy ו-memcpy. הם נבדלים זה מזה לפי הפונקציונליות שלהם. הדרכה זו תדון ב strncpy() פונקציה ב-C++.

מהי הפונקציה strncpy() ב-C++

הפונקציה strncpy() היא פונקציית C++ מובנית המשמשת להעתקת כמות קבועה של תווים ממחרוזת אחת לאחרת. הפונקציה צריכה שלושה פרמטרים: מחרוזת היעד שתכיל את התווים, מחרוזת המקור שתספק את התווים וספירת התווים להעתקה. אם מחרוזת המקור קטנה ממספר התווים שצוין, מחרוזת היעד תהיה מרופדת בתווי Null באורך הנותר.

אב הטיפוס של פונקציה strncpy() ניתן להלן.







לְהַשְׁחִיר * strncpy ( לְהַשְׁחִיר * ידיים const לְהַשְׁחִיר * src, size_t לספור ) ;

מהם הפרמטרים של C++ strncpy()

כל הפרמטרים של strncpy() הפונקציה מוסברת להלן.



  • יד: מצביע למערך היעד אליו הגיע התוכן
  • src: מצביע למערך המקור ממנו מגיע התוכן
  • לספור: המספר הגבוה ביותר של תווים שניתן להעתיק מהמקור ליעד.

כיצד פועלת הפונקציה strncpy() ב-C++

strncpy() הפונקציה מקבלת שלושה ארגומנטים: dest, src, ו לספור . זה בודק אם ה src המחרוזת מסתיימת null, ואם כן, היא מעתיקה את מספר התווים שצוין מה- src מחרוזת ל הַתחָלָה חוּט. אם הספירה קטנה מאורך ה src מחרוזת, תווי הספירה הראשונים הועברו אל הַתחָלָה מחרוזת ואינם מסתיימים באפס. אם הספירה עולה על האורך של src , כל הדמויות מ src מועתקים ל הַתחָלָה , ותווי אפס נוספים שמסיימים נכללו עד שכל תווי הספירה ייכתבו.



הדוגמה הנתונה ממחישה את פעולת ה-C++ strncpy() פוּנקצִיָה.





#include
#include
באמצעות מרחב שמות סטד ;
int רָאשִׁי ( )
{
לְהַשְׁחִיר src_str [ ] = 'אני כותב קוד עבור strncpy' ;
לְהַשְׁחִיר dest_str [ 60 ] ;
strncpy ( dest_str,src_str, סטרלן ( src_str ) ) ;
cout << dest_str << ' \n ' ;
לַחֲזוֹר 0 ;
}

בתוכנית זו, השתמשנו קובץ header כי הוא כולל strncpy() פוּנקצִיָה. הגדרנו שתי מחרוזות האחת היא src_str והשני הוא dest_str. strncpy() פונקציה שממנה לוקחים נתונים מחרוזת src_str ומעתיק אותו ל- dest_str . כאן strlen(src_str) משמש לספירת המספר הכולל של התווים מה- מחרוזת src_str .

ה תְפוּקָה של התוכנית ניתן להציג להלן.



מהן הבעיות בשימוש strncpy() ב-C++

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

סיכום

כדי להעתיק נתונים ממחרוזת אחת לאחרת, אנו משתמשים strncpy() ב-C++ שהיא פונקציה מובנית ב קובץ הכותרת. במאמר זה, דנו בתחביר ובעבודה של ה-C++ strncpy פונקציה עם דוגמה. הדגשנו גם כמה בעיות שבגללן strncpy פונקציה יכולה להפוך את הקוד שלנו למסוכן.