|
1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<stdlib.h>
#include<string.h>
intdelete_sub_str(constchar*str,constchar*sub_str,char*result)
- {
- char*p=str;
- char*q=sub_str;
- char*r=result;
- intsub_len=strlen(sub_str);
- intcmp,cnt=0;
- chartmp[50];
- while(*p&&(p+sub_len-1!='\0'))
- {
- if(*p==*q)
- {
- strncpy(tmp,p,sub_len);
- tmp[sub_len]='\0';
- cmp=strcmp(tmp,sub_str);
- if(cmp==0)
- {
- cnt++;
- p=p+sub_len;
- }
- }
- *result++=*p;
- p++;
- }
- *result='\0';
- returncnt;
- }
intmain(/*intargc,char**argv*/)
- {
- intcnt;
- constcharstr[50]="hao123hello123world";
- constcharsub_str[50]="123";
- charresult[50];
- cnt=delete_sub_str(str,sub_str,result);
- printf("resultis:%s\n",result);
- printf("cntis:%d\n",cnt);
- getchar();
- return0;
- }
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int delete_sub_str(const char *str,const char *sub_str,char *result)
{
char *p=str;
char *q=sub_str;
char *r = result;
int sub_len = strlen(sub_str);
int cmp,cnt = 0;
char tmp[50];
while(*p && (p+sub_len-1 != '\0'))
{
if(*p == *q)
{
strncpy(tmp,p,sub_len);
tmp[sub_len] = '\0';
cmp=strcmp(tmp,sub_str);
if(cmp == 0)
{
cnt++;
p=p+sub_len;
}
}
*result++ = *p;
p++;
}
*result = '\0';
return cnt;
}
int main(/*int argc, char **argv*/)
{
int cnt;
const char str[50]="hao123hello123world";
const char sub_str[50]="123";
char result[50];
cnt = delete_sub_str(str,sub_str,result);
printf("result is :%s\n ",result);
printf("cnt is :%d\n ",cnt);
getchar();
return 0;
}
2 使用C语言实现字符串中子字符串的替换
描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。
举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:
ABCDEFGHIJKLMNOPQgggUVWXYZ
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidStrReplace(char*strSrc,char*strFind,char*strReplace)
- {
- char*p=strSrc;
- char*q=strFind;
- char*s=strReplace;
- charresult[50];
- chartmp[50];
- char*r=result;
- intcmp;
- intlen=strlen(strFind);
- //intlen2=strlen(strSrc);
- while(*p)
- {
- if(*p==*q)
- {
- strncpy(tmp,p,len);
- tmp[len]='\0';
- cmp=strcmp(tmp,strFind);
- if(cmp==0)
- {
- while(*s)
- *r++=*s++;
- p=p+len;
- if(*p=='\0')
- break;
- continue;
- }
- }
- *r++=*p;
- p++;
- }
- *r='\0';
- strcpy(strSrc,result);
- }
intmain(/*intargc,char**argv*/)
- {
- charstrSrc[50]="abcdhelloabefg";
- charstrFind[50]="hello";
- charstrReplace[50]="world";
- printf("resultis:%s\n",strSrc);
- StrReplace(strSrc,strFind,strReplace);
- printf("resultis:%s\n",strSrc);
- //printf("cntis:%d\n",cnt);
- getchar();
- return0;
- }
|
|
|