指针、字符串与函数

刚才去考C语言实验,我以为对我来说会很简单,然而现实却给我沉重的打击。其实题目并不难,只因为我实在太,嗯,自大,有一道题目写错了。加上时间太紧张,我也太紧张,没有办法修改,就这一草草提交了。

我描述一下我写错的这道题目,一点都不难🙃:

给出一个字符串,把除第一个出现的重复字符去掉。如对aabbccabcd,输出abcd。

乍一看,很简单吧?我当时就想,这么简单,不秀一些骚操作岂不是显得自己太无能?于是就开始秀了,于是就把自己秀死了!我的思路是把第一次出现的每个字符存在一个新的数组中,把重复出现的字符前移:

char s[100];    //存放要处理的字符串
char set[100];  //存放第一次出现的字符集
char *p = s;
while (*p++ != '\0')
{
    if (ifrepeat(set, p))
        move(p);    //让p后的每一个字符往前移
    else
        add(set, *p);
}
printf("%s", s);
int ifrepeat(char *set, char *p)
{
    while (*set++!=*p && *set!='\0' )
    {
        set++;
    }
    return *set;
}
void add(char *set, char *p)
{
    while (*set++!='\0')
    {
        ;
    }
    *set = *p;
    *(set+1) = '\0';
    return;
}