c语言如何进行数组中元素个数的计数

这是我在做一个名叫 组成最大数 的程序时候想提的问题:如何对输入的数组中的数字个数进行计数

以下是我同学教我的方法,但我不怎么懂

#include      
int main()      
{      
    int i,j=0,a[100000],m,n,s,b;      
    for(i=0;i<=100000;i++)      
    {      
        m=getchar();      
        if(m=='\n')      
            break;      
        a[i]=m-'0';      
        j++;      
    }      
    for(i=0;is=i;      
        for(n=i+1;nif(a[s]s=n;      
        }      
        b=a[i];      
        a[i]=a[s];      
        a[s]=b;      
    }      
    for(i=0;i"%d",a[i]);      
        if(i==j-1)      
            printf("\n");      
    }      
}  


输入42351之后 就会输出54321,用了冒泡排序,但是那个j(数组中元素个数)有其他方法来计算吗?这个我真的不懂
大家有没有什么更简单易懂的方法,让我可以替换掉那个求 j 的部分?

每getchar一次j就++一次,这多简单易懂啊,还有比这更好懂的?

输入一个数就计数一次就行