先给你一个剔除字符串数字的程序,你先参考一下吧,现在没时间写程序
int delete_sub_str(const char *str, const char *sub_str, char *result_str) {//认为 result_str长度足够
int size1=strlen(str),size2=strlen(sub_str);
size_t i,j,n=0,k;
int *pi;
if(size1
for( i=0;i<=size1;i++)result_str[i]=str[i];
return 0;
}
pi=new int[size1/size2];//按最大可能分配pi
for(i=0;i
for(j=1;j
}
if(j==size2){
pi[n++]=i;
i=i+size2-1;
}
}//if
}//for
for(i=0,j=0,k=0;i
}
for(;j
delete[]pi;
return n;
}//delete
int delete_sub_str(const char *str, const char *sub_str, char *result_str){
int count=0,len_sub=strlen(sub_str);
while(*str!='\0'){
if(*str != *sub_str || strncmp(str,sub_str,len_sub))
*result_str++=*str++;//不相等,复制一个字符
else{
str+=len_sub; //相等,跳过这段字符
count++;
}
}
*result_str='\0';
return count;
}
试试下面这个
#include
#include
/*************************中间是函数部分******************************/
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
unsigned int count=0,i;
strcpy(result_str,str);
for(i=0;i<=strlen(result_str)-strlen(sub_str);i++)
if(strncmp(result_str+i,sub_str,strlen(sub_str))==0)
{
count++;
strcpy(result_str+i,result_str+i+strlen(sub_str));
}
return count;
}
/*********************************************************/
void main(void)
{
char str[80],sub_str[20],result_str[80];
int count;
gets(str);
gets(sub_str);
count=delete_sub_str(str,sub_str,result_str);
printf("count=%d\n",count);
puts(result_str);
}
#include "string.h"
int delete_sub_str(const char* str, const char* sub_str, char* result_str)
{
int count, num=0;
int str_len=strlen(str), sub_str_len=strlen(sub_str);
char *temp1, *temp2;
if(str_len
while(str_len){
temp1=str;
temp2=sub_str;
count=sub_str_len;
while(*temp2++==*temp1++ && count--)
;
if(!count){
str_len-=sub_str_len;
str+=sub_str_len;
num++;
}else{
*result_str++ = *str++;
str_len--;
}
if(!result_str){
printf("Error, not enough space for result_str\n");
break;
}
return num;
}