求各位帮助解答,没有具体的思路

数组A[N]在最后的一个for循环中,最后i+1会等于n,这就导致数组数据溢出。

编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。

问题相关代码,请勿粘贴截图

img

 1 include<stdio.h>
       +define100
 3 intmain()
 5 intA[N]
           intn=0:
 7 while((a[nl=getchar())!=lnl)
 8
 9
10
           inti,j,t;
12 for(i=0:i<n-1:i++)
13
14 for(j=0;j<n-i-1:j++)
5
16 if(A[j]>A[j+11)
17
18 t=A[J1;
19 A[j]=A[j+11
20 A[j+1]=t;
21
22
23
24 for(i=O:i<n/i++)
3
26 if(A[i]!=A[i+1])printf(“号c",A[i])
27
28 return 0;
29
运行结果及报错内容 数组A[N]在最后的一个for循环中,最后i+1会等于n,这就导致数组数据溢出。
我的解答思路和尝试过的方法 将循环条件改为i<=n;但是这样就会少一次循环。还是不行。
我想要达到的结果 原结果不变,数据不溢出。

int类型的数组为什么getchar()啊
还有程序要实现什么功能

int a = A[0];
printf("%c",a);
for(i=1;i<n;i++)
{
      if(A[i] == a)
        continue;
      a = A[i];
      printf("%c",a);
}

供参考:

#include <stdio.h>
#define  N 100
int main()
{
    char A[N], t;
    int  n = 0, i, j;
    while ((A[n] = getchar()) != '\n')
    {
        if(n==0)
            n++;
        else {
            for (i = 0, j = 0; i < n; i++){
                if (A[n] == A[i])
                {
                    j = 1;
                    break;
                }
            }
            if (!j)
                n++;
        }
    }
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1;j++)
        {
            if (A[j] > A[j + 1])
            {
                t = A[j];
                A[j] = A[j + 1];
                A[j + 1] = t;
            }
        }
    }
    for (i = 0; i < n; i++)
            printf("%c", A[i]);
    return 0;
}