字符串替换char[]?
xx(char szA[], char szB[], char szC[])
{
//将szA中的szB替换成szC,只有一个szB
}
[解决办法]
- C/C++ code
/*************************************************************************************************************************8.编写一个函数find_replace_str,其原型如下:int find_replace_str(char str[],const char find_str[],const char replace_str[])要求:该函数能够完成把字符串str中所有的子串find_str都替换成字符串replace_str,返回值为替换的次数。*************************************************************************************************************************/#include"stdafx.h"int find_replace_str(char str[],const char find_str[],const char replace_str[]){ int num=0; size_t i=0,j; size_t flen=strlen(find_str); size_t rlen=strlen(replace_str); bool f; //先记录可替换次数 while('\0'!=str[i]) { f=true; j=0; while(j<flen) { if(str[i+j]!=find_str[j++])f=false; } if(f) { i+=flen; num++; } else { i++; } } //动态分配的长度 size_t tsl=strlen(str)+num*(rlen-flen)+1; //int tsl=strlen(str)+num*(rlen>flen?rlen:flen)+1; //printf("%d\n",tsl); char *ts=(char*)malloc(tsl>4?tsl:4); //char ts[100]; int t=0; i=num=0; while('\0'!=str[i]) { f=true; j=0; while(j<flen) { if(str[i+j]!=find_str[j++])f=false; } if(f) { j=0; while(j<rlen)ts[t++]=replace_str[j++]; i+=flen; num++; } else { ts[t++]=str[i++]; } } ts[t]='\0'; i=0; while('\0'!=ts[i])str[i]=ts[i++]; str[i]='\0'; free(ts); ts=NULL; return num;}
[解决办法]
- C/C++ code
void xx(char szA[], char szB[], char szC[]){ char *p=strstr(szA,szB); if (p==NULL) return; size_t size=strlen(szC); strcpy(p+size,p+strlen(szB)); strncpy(p,szC,size);}