首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

利用函数统计文件中的每个字符出现的次数解决方案

2013-12-26 
利用函数统计文件中的每个字符出现的次数求指导函数filelen的原型如下所示,其功能是统计出指定文本文件中

利用函数统计文件中的每个字符出现的次数
求指导

函数filelen的原型如下所示,其功能是统计出指定文本文件中每一个大写英文字母、每一个小写英文字母、每一个数字字符出现的次数以及文件中字符的总数。请编写函数filelen并编制主函数进行测试。
   int filelen(FILE *f,int upc[],int lowc[],int numc[]);
[解决办法]
读取字符XChar;

if(XChar >= 48 && XChar <=57)
    numc[XChar - '0']++;
else if(XChar >= 65 && XChar <= 90)
    upc[XChar - 'A']++;
else if(XChar >= 97 && XChar <= 122)
    lowc[XChar - 'a']++;
else
   continue;

读取文件后循环执行直到结束。
numc从0-9存放的是‘0’-‘9’的个数
upc 从0-25存放的是‘A’-‘Z’的个数
lowc从0-25存放的是‘a’-‘z’的个数
完整的程序自己稍微改一下就可以了。
[解决办法]
现做的 有不好的地方 希望大家 给点意见!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 1024
int filelen(FILE *fp,int big[],int small[],int num[])
{
int i = 0;
char buf[MAX]={};
while(fgets(buf,MAX,fp)!=NULL){
puts(buf);
for(i = 0;buf[i]!='\0';i++){
if(buf[i]>='a'&&buf[i]<='z')
small[(int)(buf[i]-'a')]++;
if(buf[i]>='A'&&buf[i]<='Z')
big[(int)(buf[i]-'A')]++;
if(buf[i]>='0'&&buf[i]<='9')
num[(int)(buf[i]-'0')]++;
}
bzero(buf,MAX);
}
return 0;
}
int main(int argc,char * argv[])
{
FILE *fp=NULL;
int big[26]={};
int small[26]={};
int num[10]={};
int i = 0;

if(argc!=2) {
printf("请输入 要查询的 文件名!\n");
exit(0);
}
fp = fopen(argv[1],"r");
if(fp == NULL) {
perror("open file failed!\n");
exit(-1);
}
filelen(fp,big,small,num);

for(i = 0;i<26;i++) {
printf("%c统计结果:%d\n",(char)(i+97),small[i]);
}
for(i = 0;i<26;i++) {
printf("%c统计结果:%d\n",(char)(i+65),big[i]);
}
for(i = 0;i<10;i++) {
printf("%d统计结果:%d\n",i,num[i]);
}
return 0;
}

热点排行