字符数组中字符排序,感觉代码没问题呀,运行后没有出结果。另外给字符赋值不是要加上单引号吗?a[i]=a[j]为什么不用

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{

char a[101];
int b,i,j;
gets(a);
b=strlen(a);
for(i=0;i<a-1;i++)
    for(j=i+1;j<a;j++)
        if(a[i]>a[j])
        {
            a[i]=a[j]-a[i];
            a[j]=a[j]-a[i];
            a[i]=a[j]+a[i];
        }
puts(a);




return 0;

}

修改见注释,既然是数组a[],a[i] 就是表示数组里的元素,供参考:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char a[101];
    int b,i,j;
    gets(a);
    b=strlen(a);
    for(i=0;i<b-1;i++)  //for(i=0;i<a-1;i++)
        for(j=i+1;j<b;j++) //for(j=i+1;j<a;j++)
            if(a[i]>a[j])
            {
               a[i]=a[j]-a[i];
               a[j]=a[j]-a[i];
               a[i]=a[j]+a[i];
            }
    puts(a);
    
    return 0;
}

首先,a是数组,也可以说是地址,但不是长度
然后,加单引号就不是字符了,而是值为'a[j]'的字符串