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,所以需要提前将后边的字符赋值到临时字符串中.