ניסתי לעשות פונקציה שמוחקת את הסטרינג ST2 מST כל פעם שהוא מופיע בST.
אבל משום מה לא עובד טוב, ניסתי לעבור עם הDEBUG אבל לא הצלחתי להבין למה התכנון שלי לא עובד כמו שצריך.הרעיון שלי הוא כזה: פונקציה אחת תמחק את הסטרינג פעם אחת ותחזיר אם מחק או לא.
אופן פעולה: מחפש את הסטרינג דרך הפונקציה strstr ומחליף את התו הראשון בNULL TERMINATOR ולקדם את המצביע באורך של ST2+1 כדי להגיע להמשך, ואז לעשות STRCAT כדי לאחד את ההמשך עם ההתחלה.
ופונקציה שניה שמבצעת את העבודה כל עוד יש מה למחוק.
char * delete_all_string(char * st,char * st2) {int flag=1; while(flag) { flag=delete_string(st,st2); } return st; } int delete_string(char *st,char * st2) { char * ptr=strstr(st,st2); int len=strlen(st2); if(ptr!=NULL) { *ptr='\0'; ptr+=len+1; strcat(st,ptr); return 1; } return 0; }
|
מסיבה מסוימת זה לא מוחק את הפעם השניה אם אני נניח שולח לפונקציה
char st1="aviad b aviad"; char st2="aviad"; puts(delete_all_string(st1,st2));
|

