C中求一个int数的位数

为什么求不出来呢?输入一位数字,结果正确,两位也没问题,三为2以上就不行了,请各位大侠救命呀~
#include "stdafx.h"
#include "math.h"
void main(int argc, char* argv[])
{
int i,j,k;
printf("输入i:");
scanf("%d",&i);
k=i;
for(j=1;j<5;j++)
{
i=(int)i/(int)pow(10,j);
if(i==0)
break;
}

printf("%d\n",j);
}
i=(int)i/(int)pow(10,j);//第配御厅二拆皮个i改为k,如培隐下
i=(int)k/(int)pow(10,j);