统计指定文本中每一个大写英文字母、每一个小写英文字母、每一个数字字符出现的次数以及文件中字符的总数
题目在代码里,改了好久。。改了好多。。可是都不知道为何。。我是初学者,刚学文件这章。。。求大神们指导我一下~~
程序代码:#include<stdio.h>
int filelen(FILE *f,int upc[],int lowc[],int numc[]);
/*函数filelen的原型如下所示,其功能是统计出指定文本文件中每一个大写英文字母、每一个小
写英文字母、每一个数字字符出现的次数以及文件中字符的总数。请编写函数filelen并编制主函数进行测试。
int filelen(FILE *f,int upc[],int lowc[],int numc[]);
提示:
① 文件在主函数中打开/关闭,通过文件类型指针f传递到函数中;
② 文件中字符总数通过函数的返回机制返回;
③ 统计的3类字符个数通过计数器数组从函数中带回,在主函数中输出;*/
void main()
{
FILE *fp;
int x,a[26]={0},b[26]={0},c[10]={0},i;
int big=0,small=0,number=0;//big、small、number是用来求大写小写数字各自的和
if((fp=fopen("data.txt","r"))==NULL)//已经建立了一个data.txt
{
printf("不能打开文件\n");
return ;
}
x=filelen(fp,a,b,c);//x是用来求其他字符的总数
for(i=0;i<26;i++)
{ printf("大写字母%c出现了%d次",'A'+i,a[i]);
big+=a[i];
}
for(i=0;i<26;i++)
{ printf("小写字母%c出现了%d次",'a'+i,b[i]);
small+=b[i];
}
for(i=0;i<10;i++)
{ printf("数字%d出现了%d次",i,c[i]);
number+=c[i];
}//以上用for循环分别输出每个大小写字母出现的字数、数字出现的字数,以及求big、small、number和
printf("大写字母一共出现%d次,小写字母一共出现%d次,数字一共出现%d次,总字符为%d个",big,small,number,x+big+small+number);
}
int filelen(FILE *f,int upc[],int lowc[],int numc[])
{
char c=fgetc(f);
int i=0,p=0;
while(c!=EOF)
{
if(c>='A'&&c<='Z')
upc['c'-65]+=1;
if(c>='a'&&c<='z')
lowc['c'-97]+=1;
if(c>='0'&&c<='9')
numc['c'-48]+=1;
else
p+=1;
}//以上是来 求:比如 A出现3次,就upc[0]=3
return p;//p是其他字符的总和
fclose(f);
}






