用C语言写一个无线循环 当输入数字时正确 输入其他时报错 请重新输入

我自己尝试写过 问题是输入字符或其他的时候 程序进入不限循环报错
请大侠们教我应该怎么写 谢啦
#include<stdio.h>携键
#include<string.h>
char a[1005];
int main()
{
int i ,len;
while(1){
scanf("%s",a);
len = strlen(a);
for(i = 0;i < len;i ++) {
if(a[i] >='0' && a[i] <='9');
else break;
}
if(i == len) printf("YES\n"辩信巧);
else printf("%d %d NO\坦敬n",i,len);
}

}
#include<stdio.h>
int main()
{
char a;
int shu=0,c;
printf("qingshuru:\n\n");
for(c=1;c>=0;c++)
{
while((a=getchar())!='\n')
{
if((a>='a'&&a<='z')||(a>咐顷='A'&&a孙简陆<='Z'))
printf("则顷sorry\n");
else if(a>='0'&&a<='9')
shu++;
else
printf("sorry\n\n");
}
}
getch();
}