1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。
#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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void StrReplace(char* strSrc, char* strFind, char* strReplace)
{
char *p=strSrc;
char *q=strFind;
char *s=strReplace;
char result[50];
char tmp[50];
char *r=result;
int cmp;
int len = strlen(strFind);
//int len2=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);
}
int main(/*int argc, char **argv*/)
{
char strSrc[50]="abcdhelloabefg";
char strFind[50]="hello";
char strReplace[50]="world";
printf("result is :%s\n ",strSrc);
StrReplace(strSrc,strFind,strReplace);
printf("result is :%s\n ",strSrc);
//printf("cnt is :%d\n ",cnt);
getchar();
return 0;
}