读入一个英文文件显示并 统计单词数量和段落数量
编写一个小程序,可以读入一个英文的文本文件,显示这个文件,并统计这个文件有多少个字符,多少个单词,多少个空白(空格、
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(行尾)等等