C语言删除字符串A中的字符b,C语言删除字符串中指定的一串字符

本文提供了多种使用C语言实现从一个字符串中删除另一个指定字符串的方法。包括利用循环和条件判断进行精确匹配并移除子串的技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[1]strcpy的应用

#include#includevoid 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;jc[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#includevoid 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;kc[k-i]=a[k];/*选取lenb长度的字符串并赋值给c*/

if((strcmp(b,c))==0)/*判断b,c字符串是否相等*/

{

for(k=i;ka[k]='\0';/*让和字符串b相同的一部分归零

*/

}

}

printf("删除指定字符串后的字符串是:");

for(i=0;iif(a[i]!='\0')/*零不输出*/

printf("%c",a[i]);

printf("\n");

}

[2]的函数形式

#include#includeint 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;kc[k-i]=a[k];/*选取lenb长度的字符串并赋值给c*/

if((strcmp(b,c))==0)/*判断b,c字符串是否相等*/

{

for(k=i;ka[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;iif(a[i]!='\0')/*零不输出*/

printf("%c",a[i]);

printf("\n");

}

[3]

#include#includevoid 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#includevoid 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{

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]

#includevoid 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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值