זו הפונקציה המלאה int removeCharacter(char *string, char *letter) { int i,counter=0; char string1={0}; char c=*letter; if (strcmp(string,"c")==0) return 1; else { for(i=0;i<(strlen(string)-1);i++) { if (string!=c) strcat(string1,string); if (string==c) { counter++; } } } return counter; }
|
היא לא סופית.. כי אני מקבל הודעת קריסה כמו שהצגתי ולכן לא יכלתי להתקדם עם השינויים על המחרוזת...
השיטה שלי הייתה כזאת.. תחילה אני בודק אם המחרוזת למעשה היא התו הבודד letter עצמו.. אם כן אני אומר שהמשתנה הסופר שלי הוא 1 ואני בעצם צריך להדפיס מחרוזת ריקה כי למעשה מחקתי את התו היחיד שיש בה... אם לא אז, אני רץ בלולאה על המחרוזת המקורית.. כל עוד לא הגעתי לסוף המחרוזת. בכל סיבוב אני שואל אם התו במחרוזת במקום i שווה ל c... אם לא אני משרשר את התו שנמצא במקום i למחרוזת החדשה אחרת זה אומר שמצאתי תו שאני צריך למחוק.. במקרה הזה אני מגדיל את המשתנה שסופר מופעים ב 1.
זו הייתה אמורה להיות השיטה... בגלל שזה לא הלך לי התחלתי לעשות כל מיני שינויים...
לא הצלחתי לעשות השוואה בין קוד אסקי של המחרוזת במקום i לקוד אסקי של letter.. לכן הגדרתי משתנה חדש מסוג *char ואז ההשוואה הייתה בסדר.. אבל אז משהו אחר נדפק..
זה אמור להיות קוד פשוט אבל הסתבכתי איתו ממש.
קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.