logo

הפונקציה Strsep() ב-C

מבוא:

מחרוזות מהווים מרכיב חיוני של תִכנוּת , כי הם מאפשרים לתקשר עם משתמשים, הצג תוצאות וקרא קבצים . הם סוג של מנגנון הזנה ופלט נתונים. מאז מחרוזות נמצאים בשימוש תמידי בתפקידים מסוימים בתוכניות שאנו יוצרים, טיפול יעיל במחרוזות והפונקציות המעבדות אותן הן קריטיות.

מדריך זה ילמד אותך כיצד לחלק טקסטים בהתאם למפרידים באמצעות ה שיטת strsep() .

נעבור על קֶלֶט ו ארגומנטים פלט ל strsep() , שלה תחביר ו הסבר תיאורטי , וסוגי הנתונים המותרים עבור כל אחד מהארגומנטים הללו.

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

תחביר הפונקציה Strsep() בשפת C:

 char *strsep(char **restrict stringp, const char *restrict delim); 

הסבר על הפונקציה Strsep() ב-C:

  • א חוּט מתפרק באמצעות פונקציית strsep()‎ , המתחיל בתוחם שנקבע מראש.
  • ה חוּט הצביע על ידי ה קלט stringp ארגומנט מפוצל על ידי פונקציה זו, והחלקים משולבים לאחר מכן ליצירת מחרוזות חדשות שכולן מסתיימות בתו האפס.
  • כל מחרוזת חדשה מתחילה ב- כתובת ניתן על ידי מצביע הפלט ומסתיים היכן שה תוחם שצוין על ידי אני משתף ו strsep() כאשר נמצא מפריד, הפונקציה מחליפה אותו בתו ריק כדי לציין את סוף המחרוזת החדשה.
  • ה מצביע stringp מוגדר אוטומטית בתחילת הפרגמנט לאחר גילוי תו המפריד כאשר הפונקציה חוזרת מהקריאה שלה. ה מצביע stringp מוכן כעת להשיג את הפרגמנט הבא בקריאת הפונקציה הבאה. עד strsep() נגמרים המפרידים ומחזירה מצביע null. כתוצאה מכך, תהליך זה חוזר על עצמו עבור כל שיחה.

חשוב לציין שפונקציה זו משנה את טקסט הקלט באופן בלתי הפיך על ידי החלפת תווי אפס במפרידים. ה הכותרת 'string.h' מכיל את ההגדרה של פונקציית strsep()‎ . עלינו לשלב אותו בקוד שלנו באופן הבא כדי להשתמש בו ובשאר פונקציות ניהול המחרוזות:

 #include 

כיצד להשתמש בפונקציית Strsep() של שפת C כדי לפצל מחרוזת למספר פרגמנטים

בדוגמה זו, הביטוי 'בוא נתחיל לתכנת' נוצר כמחרוזת, והתוכן שלה מפורק באמצעות ה- פונקציית strsep()‎ . כל אחד מהמחרוזות החדשות שנוצרו לאחר מכן מופק בשורה נפרדת ב- מסוף פיקוד . המיתר שעליו הצביע ה מחרוזת פרמטר קלט מחולק מילה אחר מילה מכיוון שהמפריד בו אנו משתמשים בארגומנט הקלט delim הוא ה תו רווח (' ') .

מחרוזת jsonobject

אנו מכריזים על 'חטא' מחרוזת יחד עם הטקסט 'בוא נתחיל לתכנת' וה מצביע 'in_Ptr' בתוך ה הפונקציה main(). . ה stringp של הפונקציה strsep() ארגומנט קלט הוא המצביע הזה.

בתור ה ארגומנט קלט delim בשביל ה שיטת strsep() ואת תו המפריד המיועד, אנו מצהירים בנוסף על ה- 'מחרוזת דל' עם תו החלל. בהמשך נכריז על מצביע 'o_Ptr' , המשמש כ ארגומנט הפלט של strsep()‎ . ה שיטת printf() ישתמש במצביע זה כארגומנט קלט כדי להציג את הפרגמנט המשוחזר במסוף הפקודות.

לאחר מכן, לאחר אספקת ה של המחרוזת כטיעון הראשון, ה 'in_Ptr' מצביע כפרמטר השני, וה- מצביע 'o_Ptr' כארגומנט הפלט, אנו קוראים ל- פונקציית strsep()‎ . שיחה זו מתבצעת בתוך א בעוד לולאה עם תנאי מילוט שאין יותר תוחמים מתי strsep() מחזיר מצביע אפס.

חינם לעומת חינם

הקוד עבור דוגמה זו הוא כדלקמן:

 #include #include int main() { char s_in[50] = 'Let's start programming '; char del[20] = ' '; char* in_Ptr = s_in; char* o_Ptr; while ((o_Ptr = strsep(&in_Ptr, del)) != NULL) { printf('%s
', o_Ptr); } return 0; } 

Strsep() מחלק את 'חטא' מחרוזת מילה אחר מילה, מייצרת מחרוזת חדשה בכל פעם, אשר מוצגת לאחר מכן בשורה חדשה במסוף הפקודות, כפי שמוצג להלן;

תְפוּקָה:

 Let's start programming 

סיכום

במאמר זה, הדגמנו כיצד לעבד מחרוזות באמצעות ה- פונקציית strsep()‎ , אחת מהפונקציות המפורטות ב- 'string.h' כּוֹתֶרֶת. דיברנו על ההצדקה התיאורטית לכך תחביר, טכניקת שיחות , ו מבצע . בנוסף, הדגמנו את סוג הנתונים שכל ארגומנט קלט ופלט מקבל.