//NO1 solution: strtok and strcat char* strReplaceNo1(char* str, char* oldpart, char* newpart) { char temp[256],refer[256]; memset(temp, 0, sizeof(temp)); strcpy(refer, str); if(!memcmp(str, oldpart, strlen(oldpart))) strcat(temp, newpart); char* pch; pch = strtok (refer,oldpart); while (pch != NULL) { strcat(temp,pch); strcat(temp,newpart); pch = strtok (NULL, oldpart); } pch=str; if(!memcmp(str+strlen(refer)-strlen(oldpart), oldpart, strlen(oldpart))) temp[strlen(temp)-strlen(newpart)] = '/0'; strcpy(str, temp); return str; } //NO2 solution: strstr and strcat char* strReplaceNo2(char* str, const char* oldpart, const char* newpart) { char temp[256]; memset(temp, 0, 256); const int size = strlen(oldpart); const int sizeNew = strlen(newpart); int off = 0; char* pch = strstr(str, oldpart); int pos1=0, pos2=0; while(pch!=NULL) { pos2=pch-str; memmove(temp+off, str+pos1, pos2-pos1); strcat(temp, newpart); off+=pos2-pos1+sizeNew; pos1 = pos2+size; pch = strstr(pch+size, oldpart); } pch=str; strcat(temp,str+pos1); strcpy(str, temp); return str; } 就不附测试程序了,经过很仔细的测试,应该没什么问题。