Prog#197: count no. of upper, lower, digits & special char

/*
count no. of upper, lower, digits & special char
Program#197
*/
#include<stdio.h>
main(int argc,char *argv[])
{
int i,c,u,l,d,s,j;
char a[500];
FILE *fp;
if(argc!=2)
{
printf("error. no.of arg");
return 0;
}
fp=fopen (argv[1], "r");
if(fp==NULL)
{
printf("file open error");
return 0;
}
c=i;u=0;l=0;d=0;s=0;
for(i=0;(a[i]=getc(fp))!=EOF;i++)
{
if(a[i]=='\n')
{
a[i]='\0';puts(a);
j=0;
while(a[j]!='\0')
{
if(a[j]>=65&&a[j]<=90)
l++;
else
if(a[j]>=97&&a[j]<=122)
l++;
else
if(a[j]>=48&&a[j]<=57)
d++;
else
s++;
j++;
}
i=-1;
}
}
printf("%d %d %d %d", u,l,d,s);
fclose(fp);
}