为什么这个代码输出没有结果?

#include

int main()
{
    char a[50];
    int i,bk=0,nm=0,su=0,lo=0,df=0;
    printf("请不断输入字符,输入“#”会直接结束读取(最多容纳50个字符):");
    for(i=0;a[i]!='#';i++)
    {
        scanf("%c,",&a[i]);
        if(a[i]=='#')
            break;
    }
    for(i=0;i>=0;i++)
    {
        if(a[i]>='a'&&a[i]<='z')
        {
            bk++;
        }
        else if(a[i]>='A'&&a[i]<='Z')
        {
            nm++;
        }
        if(a[i]==' ')
        {
            su++;
        }
        else if(a[i]>='1'&&a[i]<='9')
        {
            lo++;
        }
        else
        {
            df++;
        }
    }
    printf("空格有%d个\n小写字母有%d个\n大写字母有%d个\n数字字符有%d个\n其他字符有%d个。",su,bk,nm,lo,df);
}


你有几个问题
1.

img


a[i]还没有存储值。所以可能会导致程序奔溃
2.

img


这个循环会变成死循环
改良代码如下

char a[50];
    int i,bk=0,nm=0,su=0,lo=0,df=0;
    printf("请不断输入字符,输入“#”会直接结束读取(最多容纳50个字符):");
    int i_Count=0;
    for(int i=0;i<50;++i)
    {
        char ch;
        scanf("%c,",&ch);
        if(ch=='#')
            break;
        a[i]=ch;
        i_Count++;
    }
    
    for(i=0;i<i_Count;i++)
    {
        if(a[i]>='a'&&a[i]<='z')
        {
            bk++;
        }
        else if(a[i]>='A'&&a[i]<='Z')
        {
            nm++;
        }
        if(a[i]==' ')
        {
            su++;
        }
        else if(a[i]>='1'&&a[i]<='9')
        {
            lo++;
        }
        else
        {
            df++;
        }
    }
    printf("空格有%d个\n小写字母有%d个\n大写字母有%d个\n数字字符有%d个\n其他字符有%d个。",su,bk,nm,lo,df);

img

#include<stdio.h>
 
int main()
{
    char a[50];
    int i,k, bk=0,nm=0,su=0,lo=0,df=0;
    printf("请不断输入字符,输入“#”会直接结束读取(最多容纳50个字符):");
    char ch;
    k = 0;
    while (scanf("%c", &ch) != EOF)
    {
        if (ch == '#')
            break;
        a[k++] = ch;
    }
    for(i=0; i<k; i++)
    {
        if(a[i]>='a' && a[i]<='z')
        {
            bk++;
        }
        else if(a[i]>='A' && a[i]<='Z')
            {
                nm++;
            }
        else if(a[i]==' ')
            {
                su++;
            }
        else if(a[i]>='1'&&a[i]<='9')
        {
            lo++;
        }
        else
        {
            df++;
        }
    }
    printf("空格有%d个\n小写字母有%d个\n大写字母有%d个\n数字字符有%d个\n其他字符有%d个。",su,bk,nm,lo,df);
}