15-01-2009, 09:25
|
מנהל
|
|
חבר מתאריך: 09.10.04
הודעות: 15,910
|
|
למה להסתבך כ"כ?
אתה מתחיל את הלולאה שלך כשאתה מחפש את תת המחרוזת במיקום הראשון שלה, אתה מקבל מצביע למיקום הזה, את החיפוש הבא אתה מתחיל ממיקום חדש במחרוזת הראשית, שהוא המיקום שמצאת בקריאה הקודמת + 1 (או אורך תת המחרוזת, אבל אז צריך להיזהר לא לדרוך מחוץ לגבולות המחרוזת שלך), וחוזר חלילה עד שתקבל NULL בקריאה לפונקציה.
קוד PHP:
void example_strstr( void ) { char *str1 = "hello and hello"; char *str2 = "hello"; int n_occur = 0; char *cur_loc = NULL; cur_loc = str1; while (NULL != (cur_loc = strstr(cur_loc, str2))) { printf("cur_loc: <%s>\n", cur_loc); n_occur++; cur_loc++; } printf("n occurences: <%d>\n", n_occur); }
_____________________________________
הראל
|