[1]strcpy的应用
#include<stdio.h>
#include<string.h>
void sc(int lena,int lenb,char a[],char b[])
{
int i,k,j,m=0;
char c[100];
for(i=0;a[i];i++)
{
k=i;
for(j=0;j<lenb;j++)
c[j]=a[k++];
c[j]='\0';
if(strcmp(b,c)==0)
{strcpy(a+i,a+k);
i--;
}}
}
void main()
{
char a[100],b[100];
int lena,lenb;
printf("请输入一个字符串\n");
gets(a);
printf("请输入待删除的字符串\n");
gets(b);
lena=strlen(a);
lenb=strlen(b);
sc(lena,lenb,a,b);
printf("删除指定字符串后的字符串是:");
puts(a);
}
[2]不用函数
#include<stdio.h>
#include<string.h>
void main()
{
static char a[100],b[100],c[100];
int i,lena,lenb,k,t;
printf("请输入一个字符串\n");
gets(a);
printf("请输入待删除的字符串\n");
gets(b);
lena=strlen(a);
lenb=strlen(b);
for(i=0;i<=lena-lenb;i++)/*选取从i开始的字符*/
{
for(t=0;t<100;t++)/*字符串c归零*/
c[t]=0;
k=i;
for(k=i;k<lenb+i;k++)
c[k-i]=a[k];/*选取lenb长度的字符串并赋值给c*/
if((strcmp(b,c))==0)/*判断b,c字符串是否相等*/
{
for(k=i;k<lenb+i;k++)
a[k]='\0';/*让和字符串b相同的一部分归零
*/
}
}
printf("删除指定字符串后的字符串是:");
for(i=0;i<lena;i++)
if(a[i]!='\0')/*零不输出*/
printf("%c",a[i]);
printf("\n");
}
[2]的函数形式
#include<stdio.h>
#include<string.h>
int shanchu(char a[],char b[],int lena,int lenb)
{
int i,k,t;
char c[100];
for(i=0;i<=lena-lenb;i++)/*选取从i开始的字符*/
{
for(t=0;t<100;t++)/*字符串c归零*/
c[t]=0;
k=i;
for(k=i;k<lenb+i;k++)
c[k-i]=a[k];/*选取lenb长度的字符串并赋值给c*/
if((strcmp(b,c))==0)/*判断b,c字符串是否相等*/
{
for(k=i;k<lenb+i;k++)
a[k]='\0';/*让和字符串b相同的一部分归零*/
}
}
return lena;
}
void main()
{
static char a[100],b[100];
int i,lena,lenb,k,t;
printf("请输入一个字符串\n");
gets(a);
printf("请输入待删除的字符串\n");
gets(b);
lena=strlen(a);
lenb=strlen(b);
lena=shanchu(a,b,lena,lenb);
printf("删除指定字符串后的字符串是:");
for(i=0;i<lena;i++)
if(a[i]!='\0')/*零不输出*/
printf("%c",a[i]);
printf("\n");
}
[3]
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[20];
int i,k,j;
printf("请输入一个字符串\n");
gets(a);
printf("请输入待删除的字符串\n");
gets(b);
for(i=0;a[i];i++)
{
if(a[i]==b[0])
{k=i;j=0;
while(b[j]&&a[k]&&a[k++]==b[j++]);
if(b[j]=='\0')strcpy(a+i,a+k);
i--;/*划重点*/
}
}
printf("删除指定字符串后的字符串是:");
puts(a);
}
[4]
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[20];
int i,k,j,n,num=0;
printf("请输入一个字符串\n");
gets(a);
printf("请输入待删除的字符串\n");
gets(b);
for(i=0;i<strlen(a)-num*strlen(b);i++)
{
if(a[i]==b[0])
{
k=i;j=0;
while(b[j]&&a[k]&&a[k++]==b[j++]);
if(b[j]=='\0')
{
num++;
for(n=i;a[n+j];n++)a[n]=a[n+j];
}
i--;/*划重点*/
}
}
a[i]='\0';
printf("删除指定字符串后的字符串是:");
puts(a);
}
[5]
#include<stdio.h>
void fun(char *p,char *q)
{
int i,t,m;
for(i=0;*(p+i);i++)
if(*(p+i)==*q)
{
t=i;
m=0;
while(*(p+t)==*(q+m)&&*(p+t)!=0)/*不可以为while(*(p+t++)==*(q+m++)&&*(p+t)!=0)*/
{
t++;
m++;
}
if(*(q+m)=='\0')
{
m=i;
while(*(p+t))
{
*(p+m)=*(p+t);
m++;
t++;
}
*(p+m)='\0';
i--;
}
}
}
void main()
{
char a[1000],b[100];
printf("请输入一个字符串\n");
gets(a);
printf("请输入待删除的字符串\n");
gets(b);
fun(a,b);
printf("删除指定字符串后的字符串是:");
puts(a);
}