删除字符串中最左边的指定字符串,高手看看我这儿的问题
我要做的是,删除字符串中最左边的指定字符串,如:源字符串是"asdfasds",指定字符串是"asd",用以下delleft函数后则得到"fasds",若指定字符串是"sd",就不删除,得到的还是"asdfasds"。
void delleft(char *szString, char *szSubString){ char *pSrc = szString,*pDes = szString,*pSub,*p; if((szString == NULL)||(szSubString == NULL)) return; if(*szString != *szSubString) return; p = pSrc; pSub = szSubString; while(*p != '\0' && *p == *pSub) { p ++; pSub ++; } if(*pSub == '\0')//在这里我已经得到了想要的结果,如何修改源字符串啊? { while(*p) *pDes++ = *p++; }
void main(){ char str[50] = "s";//赋初值 char sub[50] = "s"; cout<<"input a string:"; cin>>str; cout<<"input what you want to delete:"; cin>>sub; delleft(str,sub); cout<<"\ndelete:"<<str<<endl;}
void delleft(char *szString, char *szSubString){ char *pSub,*p; if((szString == NULL)||(szSubString == NULL)) return; p = szString; int j,k; for(int i = 0; p[i]; ++i) { pSub = szSubString; if(pSub[0] == p[i]) { for(j = 0, k = i;pSub[j]; ++j,++k) { if(pSub[j] != p[k]) break; } if(pSub[j] == '\0') { while(p[k]) { p[i++] = p[k++]; } p[i] = p[k]; break; } } }}