替换字符串一次(循环多次)
#include <stdio.h> #include <time.h> #include <malloc.h> #include <string.h> int StrReplace(char * srcstr, const char * oldstr, const char * newstr) { char *tmpbuffer; int prelen, postlen, totallen, newlen, oldlen; char *ptr; char *tmpchar; tmpchar = strstr(srcstr, oldstr); if (tmpchar == NULL) return 0; totallen = (int)strlen(srcstr); oldlen = (int)strlen(oldstr); newlen = (int)strlen(newstr); prelen = (int)(tmpchar - srcstr); postlen = totallen - prelen - oldlen; tmpchar += oldlen; tmpbuffer = (char*)malloc(prelen + newlen + postlen + 1); if (tmpbuffer == NULL) return -1; ptr = tmpbuffer; memcpy(ptr, srcstr, prelen); ptr += prelen; memcpy(ptr, newstr, newlen); ptr += newlen; memcpy(ptr, tmpchar, postlen); tmpbuffer[prelen + newlen + postlen] = 0; strcpy(srcstr, tmpbuffer); srcstr[prelen + newlen + postlen] = 0; free((void*)tmpbuffer); return 1; } #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char mystr[80] = "i am love you good you"; while(StrReplace(mystr, "you", "me")); cout << mystr << endl; system("PAUSE"); return 0; }