为什么我的代码一直出现报错。

我知道我的数组出现了栈溢出
但是每次输入的时候数值远比数组的小,
网上说把数组变大,但还是不好使

下面是我的代码

int main()

char a[80] = { 0 }, b[80] = { 0 }, c[80] = { 0 };
int i, j=0, k=0, m=0;
scanf("%s", &a[80]);
scanf("%s", &b[80]);
scanf("%s", &c[80]);
for (i = 0; i < 80; i++)
{
    if (b[i] == 0)
        break;
    if (b[i] > 'A' && b[i] < 'Z')
        k++;
}
for (i = 0; i < 80; i++)
{
    if (a[i] == 0)
        break;
    if (a[i] > 'A' && a[i] < 'Z')
        j++;
}
for (i = 0; i < 80; i++)
{
    if (c[i] == 0)
        break;
    if (c[i] > 'A' && c[i] < 'Z')
        m++;
}
printf("%d %d %d", j, k, m);
return 0;

}
报错:
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.

sacnf(格式,地址),数组名就是指针(地址),不需要取址
改成:
scanf("%s", a);
scanf("%s", b);
scanf("%s", c);