读入一个英文文件显示并 统计单词数量和段落数量
编写一个小程序,可以读入一个英文的文本文件,显示这个文件,并统计这个文件有多少个字符,多少个单词,多少个空白(空格、
TAB),多少个段落,按照单词的长度进行统计。
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> int main() { FILE *fp; char ch,Oldch; // int n1,n2,n3,n4,a; // n1=n2=n3=n4=a=0; int Paragraph = 0; int Word = 0; int Blank_space =0; int Letters = 0; bool WordFalg = false; bool ParagraphFalg = false; if ((fp=fopen("D:\\english2.txt","r"))==NULL) { printf("cannot open the file\n"); exit(0); } ch=fgetc(fp); while (ch!=EOF) { putchar(ch); if ( ( ch>='A'&&ch<='Z' ) || ( ch>='a'&& ch<='z' ) ) { Letters++; if (!WordFalg ) WordFalg = true; if (!ParagraphFalg) ParagraphFalg = true;//用来剔除前导换行 '\n' '\r' } else { if (WordFalg) { Word++; } if (ch==' '||ch=='\t') { Blank_space++; } if ( (ch=='\n'||ch=='\r') && ParagraphFalg ) { if (Oldch !='\n'|| Oldch !='\r' ) { Paragraph++; } } WordFalg = false; } /* n1++; if (ch==' '||ch=='\t') { n2++; a=0; if (a==0) { a=1; n3++; } } else if (ch=='\n'||ch=='\r') n4++; else if (ch<'A'||ch>'Z'&&ch<'a'||ch>'z') { a=0; if (a==0) { a=1; n3++; } } */ Oldch = ch; //用来剔除中间 段落换行 '\n' '\r' ch=fgetc(fp); } printf("\n"); printf("字符有%d个,空白的数量有%d个,单词数量有%d个,段落的数量%d个",Letters,Blank_space,Word,Paragraph); fclose(fp); } //按你的思路改一下,但是有些情况没处理 it's Welc-ome(行尾)等等