C 语言实现字符串替换
#include <stdio.h> #include <string.h> typedef void VOID; typedef char * PSTR; typedef int INT; typedef char STR; /*********************************************** * * StringReplace * * 字符串替换 * * * * pszInput 要转变的字符串 * * pszOld 要替换的子串 * * pszNew 被替换成的子串 * * pszOutput 输出的缓冲区 * * nOutputlen 输出缓冲区的长度 * * * **********************************************/ VOID StringReplace(PSTR pszInput, PSTR pszOld, PSTR pszNew,PSTR pszOutput,INT nOutputlen) { INT nLen=0; STR *s, *p; s = pszInput; while (s != NULL) { p = strstr(s, pszOld); if (p == NULL ) { memcpy(pszOutput+nLen,s,strlen(s)+nLen>nOutputlen?nOutputlen-nLen:strlen(s)); return ; } memcpy(pszOutput+nLen,s,p-s+nLen>nOutputlen?nOutputlen-nLen:p-s); nLen+=p-s+nLen>nOutputlen?nOutputlen-nLen:p-s; if(nLen>=nOutputlen) { return; } memcpy(pszOutput+nLen,pszNew,strlen(pszNew)+nLen>nOutputlen?nOutputlen-nLen:strlen(pszNew)); nLen+=strlen(pszNew)+nLen>nOutputlen?nOutputlen-nLen:strlen(pszNew); if(nLen>=nOutputlen) { return; } s+=strlen(pszOld)+p-s; } return ; } int main(){ char str1_t[10] = "111"; char str2_t[3] = "11"; char str3_t[2] = "1"; char strout_t[10]; StringReplace(str1_t,str2_t,str3_t,strout_t,10); printf("%s",strout_t); return 0; }