ערכתי לאחרונה בתאריך 12.10.07 בשעה 15:01 בברכה, Limp Bizkit
בניתי לך משהו
תחשוב שסוגריים מסולסלים זה סוגריים מרובעים #include <stdio.h>int main() { char name{20}; // choose your characters array-size char family{} = "aatoms"; gets(name); char *ptr = strstr(family,name); int result = ptr - family + 1; if(ptr != NULL) printf("%s found at position %d\n\n",name, result); else printf("%s not found\n", name); }
|
התוכנית (tom זה מה שקלטתי) :
tom tom found at position 3
|
הסבר :
פונקציית הספרייה strstr מקבלת שני מחרוזות, הראשונה זה המחרוזת שצריך לחפש בה, והשניה זה המחרוזת שמחפשים אותה
היא מחזירה מצביע לכתובת של האיבר הראשון בזכרון שבה המילה שאנחנו מחפשים מתיחה להופיע
במידה והמחרוזת לא נמצאה , מוחזר NULL (כלום)
בשביל להמיר את הכתובת של הזכרון למס' הגיוני (במקרה שלנו 3), אנחנו צריכים לחסר את הכתובת של מחרוזת family, ממחרוזת ptr (שמכילה מצביע לאיבר הראשון שבו המחרוזת שאנחנו מחפשים מופיעה)
במקרה שלנו, ptr מכיל מצביע לכתובת 2293570 (תחילת המילה tom) והכתובת של family היא 2293568
2293570 - 2293568 + 1 = 3
|
וקיבלנו את מס' האיבר שהמחרוזת שאנחנו מחפשים מתחילה להופיע... 3 
טוב חפרתי פה 
אם משהו לא מובן תגיד...

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.