编写函数squeeze(s1,s2),将字符串s1中任何与s2中字符匹配的字符都删掉。
#include <stdio.h>
#define MAXLINE 1000
char *squeeze(char *s1, const char *s2);
_Bool inStr(char c, char *s);
int main(int argc, char *argv[])
{
char s1[MAXLINE] = "helllo worlld ! this is a c program!";
char s2[MAXLINE] = "helowrdtisacpgm";
printf("%s", squeeze(s1, s2));
return 0;
}
_Bool inStr(char c, char *s)
{
for (size_t i = 0; s[i] != '\0'; ++i)
if (s[i] == c) return 1;
return 0;
}
char *squeeze(char *s1, const char *s2)
{
for (size_t i = 0; s1[i] != '\0'; ++i) {
if (inStr(s1[i], s2)) {
size_t i1 = i;
size_t i2 = i+1;
while ((s1[i1] = s1[i2]) != '\0') {
++i1;
++i2;
}
--i;
}
}
return s1;
}