練習2.4

編寫函數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;
}


 

發佈了51 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章