
26-01-2008, 14:46
|
|
|
|
חבר מתאריך: 15.08.06
הודעות: 1,561
|
|
מה ש strtok עושה זה בכל קריאה הוא מביא לך מחרוזת עד TOKEN מסוים (במקרה שלך - הטוקן הוא -)
איך הוא עובד?
פעם ראשונה שאתה מריץ אותה, הוא מאפס משתנה סטטי לתחילת המחרוזת, ורץ על המחרוזת עד שהוא מוצא את הטוקן. כאשר הוא מוצא, הוא מחליף את הטוקן ב "\0" שזה מסמל סוף מחרוזת (בגלל זה אתה רואה בדיבאג שהמחרוזת נגמרה), והוא משנה את המשתנה הסטטי שיצביע לאיפה שנמצא הטוקן.
בפעם השנייה שאתה מריץ אותו, הוא רץ עוד פעם על המחרוזת ומחפש טוקן, אבל הפעם הוא מתחיל איפה שהפסקת בקריאה הקודמת. מה שהוא יחזיר זה מצביע לאיפה שהוא התחיל לחפש עכשיו.
וכך הלאה
לכן העבודה עם strtok היא בדרך כלל:
קוד:
while ((str = strtok(s, '-')) != NULL) {
printf("%s\n",str);
}
(אל תבדוק אותי על סינטקס, כי אני לא זוכר איך קוראים ל strtok)
|