统计指定文本中每一个大写英文字母、每一个小写英文字母、每一个数字字符出现的次数以及文件中字符的总数
题目在代码里,改了好久。。改了好多。。可是都不知道为何。。我是初学者,刚学文件这章。。。求大神们指导我一下~~程序代码:
#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); }