大致思考方法:
定义三个字符串:str[], ab[], output[],str是输入的第一个字符串,output放的是最后的结果。
设置两个下标 i,j。i指向第一个字符串,j指向第二个子符串;
i每桥兆次向后移动一个位置,i往后的strlen(ab)个字符是不是和字符串ab匹配,如果不匹配就把孙毕str[i]添到字符串output中,如果匹配,就让i直接跳过strlen(ab)个位置;
具体还是看代码吧!自己在纸上画一画就明白了。
#include
#include
int main(void)
{
char str[30], ab[5], output[30];
scanf("%s", str);
scanf("%s", ab);
int i, j, outputIndex = 0;
for(i = 0; i < strlen(str); i ++)
{
for(j = 0; j < strlen(ab) && i + j < strlen(str); j ++)
{
if(str[i + j] != ab[j]) break;
}
if(j != strlen(ab))
output[outputIndex ++] = str[i];
else
i = i + strlen(ab) - 1;
}
output[outputIndex] = '\0';
printf("敏凯租%s\n", output);
return 0;
}
#include
void delchar(char* str, char c) {
int i = 0, j = 0;
while (str[j] != 0) {
if (str[j] != c) {
str[i] = str[j];
i++;
}
j++;
}
str[i] = 0;
}
int main()
{
char s[100];
while (scanf("%s", s) != EOF) {
delchar(s, 'a');
printf("[%s]\n", s);
}
return 0;
}
想象两个下标一个i一个铅族j。j一直向前走,如果碰到要剔除的字符就跳过去,但是i不跳槐笑弊过去,如果不是要剔除的字符就复制给i,然后i也前进,这样就把要剔除的字符删掉了。只用遍历升谈一遍,用strcpy发现一个要删除的字符就复制一遍,额外多做了很多无用功。
简单,比如s1是主字符串,s2是子字符串,遍历s1判断有无s2就可以。