【新手】如何在一个打开的文本文件中实现按照单词长度统计单词个数的功能呢
这个是主程序,实现打开任意一个文本文件并统计该文件的字符,空白,段落等参数,但是还要求按照单词长度统计单词个数这个功能。程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; void main() { int zifu=0,danci=0,kongbai=0,duanluo=0; char ch; char fname[1000]; printf("请输入需要打开的英文文本文件名:\n(注:应当包含完整路径)\n"); scanf("%s",fname); if((fp=fopen(fname,"r"))==NULL) { printf("文件不存在!\n"); exit(0); } ch=fgetc(fp); printf("\n该文本内容如下:\n"); while(ch!=EOF) { if(ch==' ') kongbai++; else if((ch>='!'&&ch<='~')) zifu++; else if(ch==10||ch==13) duanluo++; putchar(ch); ch=fgetc(fp); } fclose(fp); printf("\n\n上述文本中空白的数目:%d\n",kongbai); printf("\n上述文本中字符的数目:%d\n",zifu); printf("\n上述文本中段落的数目:%d\n",duanluo+1); printf("\n上述文本中单词的数目:%d\n",danci); }
虽然说单单做一个单词统计的程序我也会,但是合并起来要怎么实现呢。。。
程序代码:
#include "stdio.h" main() { int i,j=0,num=1,word=0,max=0,js[200],gs[100];//js[200]表示最多允许输入200个单词,gs[100]表示每个单词最多含100个字母 char a[10000];//最多允许输入10000个字符,事实上只能输入9999,因为系统要为'\0'预留一个空间 printf("请输入字符串\n"); gets(a);//获取用户输入 for(int k=0;k<200;k++)//给数组赋初值 {js[k]=0;gs[k]=0;} for(i=0;a[i]!='\0';i++)//计算有多少个空格,及每个单词有多少字母 { if(a[i]==' ') {j++;word++;} else js[j]++; } word++;//word个空格把单词分成word+1个 for(i=0;i<j+1;i++)//找字母数目最多的单词 { if(max<js[i]) {max=js[i];} } do//计算字母数目相同的单词 的个数 { for(i=0;i<word;i++) { if(js[i]==num) gs[num]++; } num++; }while(num<=max); printf(" 长度 个数\n"); for(i=1;i<=max;i++)//对应输出 { printf("%4d %4d\n",i,gs[i]); } printf("合计:%4d\n",word); }
可能问题比较菜了= =||
大大们要是会的话别走QAQ