c中判断输入是字符还是数字的有关问题,请高手帮帮忙

c中判断输入是字符还是数字的问题,请高手帮帮忙!
最近在一本书上看到如下代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<process.h>
void main()
{
  int i;
  scanf("%d",&i);
  if(i==0) //如果输入的是字符
  exit(0);
  else
  printf("%d",i);
}
(原来的程序比较复杂,这里我简化了)

请我用红色表示的那一行为什么可以判断输入是否是字符?

------解决方案--------------------
探讨
这个我也不理解啊,我只是把那代码写了一下。不过我到网上还看到这样判断的:
while(1){
printf("请输入要查的值\n");
ret=scanf("%d",&amp;n);
printf("ret=%d\n",ret);
if(ret==0){
printf("输入错误,请重新输入\n");
continue;
}
break;
}
他也是这样判……

------解决方案--------------------
ret=scanf("%d",&n);
看看scanf的返回值是成功读入的次数 如果是字符是不能成功读入按"%d"读入的。ret的值就为0,