用C语言删除重复字符串

问题遇到的现象和发生背景

img


为什么输入重复的字符S第二次的S没有输出?

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
char a[1005];
int main ()
{
    int j,n;
    gets(a);
    n=strlen(a);
    for(int i=0;ifor(int j=i+1;jif(a[i]==a[j])
            {
                for(int k=j;k1];
                }
                n--;
                j--;
            }
        }
    }
    printf("%s",a);
    return 0;    
}

供参考:

#include <stdio.h>
#define N 1005
int main()
{
    int   i, j, n;
    char  a[N],flg;
    gets(a);
    for (flg = a[0],i = 0,j = 0; a[i]; i++)
    {
        if (a[i] - flg)
            a[j++] = a[i];
        if (i == 0)
            a[j++] = a[i];
        flg = a[j-1];
    }
    a[j] = '\0';
    printf("%s" , a);
    return 0;
}

题主的代码修改如下,见注释,供参考:

#include <stdio.h>
#include <string.h>
char a[1005];
int main ()
{
    int i,j,n;      //修改
    gets(a);
    n=strlen(a);
    for(i=0;i<n-1;) //(int i=0;i<n;i++)
    {
        if (a[i] == a[i+1])
        {
            for(j=i+1;j<n-1;j++) //(int j=i+1;j<n;j++)
            {
                             //if(a[i]==a[j])
                             //{
                             //    for(int k=j;k<n;k++)
                             //    {
                a[j]=a[j+1]; //a[k]=a[k+1];
                             //    }
                             //n--;
                             //j--;
            }
            n--;             //修改
        }
        else
            i++;             //修改
    }
    a[n] = '\0';           //修改
    printf("%s",a);
    return 0;
}