C程序计算给定文本中可能有空行的字符,单词和行数?

时间:2017-02-19 01:08:16

标签: c count

以下是规格。

从stdin读取的每个字节都计为除EOF之外的字符。单词被定义为连续的字母序列(a到z,A到Z)和由这些范围之外的任何字符分隔的撇号(',十进制值39)。 行被定义为由换行符分隔的连续字符序列(' \ n')。 最终换行符之外的字符不会包含在行数中。

我的代码似乎适用于简单的输入,但是当我尝试输入一个由空行分隔的多个段落的大文件时,我的数字会被丢弃,字数和字符太高。

到目前为止我已经

#include <stdio.h>

int main(){

   char ch;
   unsigned int long linecount, wordcount, charcount;
   int u;
   linecount=0;
   wordcount=0;
   charcount=0;


   while((ch=getc(stdin))!=EOF){


       if (ch !='\n') {++charcount;}
       if (ch==' ' || ch=='\n') {++wordcount;}
       if (ch=='\n') {++linecount;}

     }
   if(charcount>0){
      ++wordcount;
      ++linecount;
   }

   printf( "%lu %lu %lu\n", charcount, wordcount, linecount );

   return 0;

}

1 个答案:

答案 0 :(得分:-1)

当您遇到空行时,您会连续两次看到\n。查找这些事件,每次看到它们时,将字数减1。