csdn_export_md (1)

文章讲述了如何在C语言中使用strstr、strcpy和strcat函数来删除字符串中的子串,强调了在PTA编程环境中的注意事项,如使用fgets代替gets并处理换行符以及strcat操作后可能影响后续字符的问题。
摘要由CSDN通过智能技术生成

PTA 7-29 删除字符串中的子串

题目:

在这里插入图片描述

答案样例

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[100],str2[100],t[100];
	fgets(str1,100,stdin);
	int i=0,j=0;
	while(str1[i]!='\n')
		i++;
	str1[i]='\0';
	fgets(str2,100,stdin);
	while(str2[j]!='\n')
		j++;
	str2[j]='\0';
	char *p;
	while((p=strstr(str1,str2))!=NULL)
	{
		
		strcpy(t,p+strlen(str2));
		*p='\0';
		strcat(str1,t);
		
	}
	puts(str1);
	return 0;
}

补充知识点

1.strstr(s1,s2)

如果s2是s1的子串,则返回s1中第一次出现相同字符的下标

否则的话则返回NULL

2.strcpy(s1,s2)

将字符串s2复制到s1中

3.strcat(s1,s2)

将s2追加到s1的尾部

易错点

.在pta上gets函数一直报错,因此最好使用fgets

fgets(name,length,stdin)

但是fgets会读入最后的换行符,所以需要删去换行符

while(str1[i]!='\n') i++; str1[i]='\0';

2.

while((p=strstr(str1,str2))!=NULL)
	{
		strcpy(t,p+strlen(str2));
		*p='\0';
		strcat(str1,t);
	}

因为将指针*p赋值为’\0’后,之后的字符也变为了0,所以需要提前将后边的字符赋值到临时字符串中.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值