为什么我这个程序判断位数报错?

#include<stdio.h>
int main()
{
int a,i=0;
scanf("%d",a);
while(a/10>=1)
{
a=a/10;
i++;
}
printf("%d",i);
return 0;
}

//以上我的代码,他报错这些

SIGSEGV on thread : 6422245376

输入a没加取地址符&
另外判断位数while循环里不要先除一次,这样会少一位
如果有帮助请点一下我回答右上方的采纳,谢谢!以后有什么问题可以互相交流。
修改后:

#include<stdio.h>
int main()
{
int a,i=0;
scanf("%d",&a);
while(a)
{
a=a/10;
i++;
}
printf("%d",i);
return 0;
}

img