常见C语言面试题之三:字符串替代
来源:互联网 发布:淘宝怎么自定义尺码 编辑:程序博客网 时间:2024/05/16 01:33
- #include "stdafx.h"
- #include "string.h"
- #include "malloc.h"
- char *replace(char *source, char *sub, char *rep)
- {
- char *result;
-
-
-
-
- char *pc1,*pc2,*pc3;
- int isource, isub, irep;
- isource = (int)strlen(source);
- isub = (int)strlen(sub);
- irep = (int)strlen(rep);
- if(*sub==NULL)
- return strdup(source);
-
- int size = (int)( (irep>isub)?(float)strlen(source)/isub*irep+1 : isource );
- result = (char *)malloc(size*sizeof(char));
- pc1=result;
- while(*source !=NULL)
- {
-
- pc2=source;
- pc3=sub;
-
-
-
-
- while(*pc2==*pc3 && *pc3!=NULL && *pc2!=NULL)
- {
- pc2++;pc3++;
- }
-
- if(*pc3==NULL)
- {
- pc3=rep;
-
- while(*pc3!=NULL)
- {
- *pc1++ = *pc3++;
- }
- pc2--;
- source=pc2;
-
-
-
- }
- else
- {
- *pc1++ = *source;
- }
- source++;
- }
- *pc1=NULL;
- return result;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- char Source[] = "abbccdfdcdbbdccd";
- char Sub[] = "bb";
- char Rep[] = "*****";
- char *p = replace(Source, Sub, Rep);
- printf("Source:%s/n",Source);
- printf("Sub:%s/n",Sub);
- printf("Rep:%s/n",Rep);
- printf("Result:%s/n",p);
- return 0;
- }