诸位大神,求急实在弄不好了

各位大神,求急,,,实在弄不好了
#include<stdio.h>
#include<string.h>
int main()
{  
int i,d=0,x=0,s=0,q=0,k=0;
char a[50];
printf("请输入一个字符串:");
gets(a);
for(i=0;i<50;i++)
{
if('0'<=a[i]&&a[i]<='9')
s++;
else if('A'<=a[i]&&a[i]<='Z')
d++;
else if('a'<=a[i]&&a[i]<='z')
x++;
else if(a[i]==''||a[i]=='\n'||a[i]=='\t')
k++;
else
q++;
}
printf("大%d,小%d,数%d,空%d,其他%d",d,x,s,k,q);
getchar();
return 0;
}

------解决方案--------------------
else if(a[i]==''
------解决方案--------------------
a[i]=='\n'
------解决方案--------------------
a[i]=='\t')
这个需要改为' ',你是要判断是不是空格吧?如果是要判断空字符,可以写成0或者'\0'
------解决方案--------------------
引用:
是空格,,我是打的两个单引号,我改了,,可是最后输出的空格只有1,就最后的一个\0中间的空格都没输出
你说的什么意思?没明白,我测试计算的空格数是正确的
------解决方案--------------------
楼主,我按你的代码原样输入,编译成功,并没有出现你所说的错误。不过,你的程序中另外存在两个错误:
1、char a[50];
   ...
   gets(a);
   for(i=0;i<50;++i)
   {
     ...
   }
   这里的错误是,如果你输入的字符并没有满到50个字符,则在for循环中,统计出错。因为你的for循环不管输入多少个字符都会重复运行50次。修改如下:
   int n;
   ...   
   gets(a);
   n=strlen(a);
   for(i=0;i<n;++i)
   {
       ...
   }
2、第2个错误是:
   else if(a[i]==''
------解决方案--------------------
a[i]=='\n'
------解决方案--------------------
a[i]=='\t')
   这里的目的是判断是否为空格,但a[i]==''实际上是判断是否为空字符'\0',这样的话,你所输入字符串中的空格会全部被累加到其他字符中(else q++;),应修改如下:
   else if(a[i]==' '
------解决方案--------------------
a[i]=='\n'
------解决方案--------------------
a[i]=='\t')
   
------解决方案--------------------
接上帖:a[i]==' ',即在两个单引号之间加入一个空格。
------解决方案--------------------
引用:
总是出现error C2137: empty character constant这个错误


另,还有个问题,在for里面,循环长度要按实际字符串长度来
#include<stdio.h>
#include<string.h>

int main()
{
int i,d=0,x=0,s=0,q=0,k=0;
char a[50];
printf("请输入一个字符串:");
gets(a);
int len = strlen(a);
printf("len=%d\n", len);
for(i = 0; i < len; i++) {