计算字母出现的频率的

我想计算一个字母出现的次数,但是结构不正确,找不到错误,帮我看一下,代码哪儿有问题?
#include 
#include 
int main()
{
    char a[1000],b[26];
    int i,j,c[26]={0};
    //把输入的字符存到a[]中 
    for(i=0;a[i]!='\0';i++)
        scanf("%c",&a[i]);
    //把26个字母存到b[]中 
    for(j=0;j<26;j++)
    {
           b[j]='a'+j;
    } 
    //比较
    for(j=0;j<26;j++) 
    {
        for(i=0;a[i]!='\0';i++)
        {
            if(a[i]==b[j])
                c[j]++;
        }
        printf("%c %d\n",b[j],c[j]);
    }
    return 0;
}
运行结果
aasxsasds
a 2
b 0
c 0
d 0
e 0
f 0
g 0
h 0
i 0
j 0
k 0
l 0
m 0
n 0
o 0
p 0
q 0
r 0
s 1
t 0
u 0
v 0
w 0
x 0
y 0
z 0
for(i=0;a[i]!='\0';i++)
    scanf("%c",&a[i]);

接收字符串错误,
scanf("%s",a);
改成这样就好了