2017-02-19 54 views
1

以下是規格。C程序可以計算給定文本中可能有空行的字符,單詞和行數?

從標準輸入讀取的每個字節都計爲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; 

} 
+0

只要遇到空格或換行符,就可以增加wordcount。重新思考一個詞是什麼。它不僅僅是一串空格和換行符。 –

+0

「*我的代碼似乎適用於簡單的輸入*」你確定嗎?餵它三個空白和一條新線。 – alk

回答

0

當你遇到空行,你會連續看\n兩次。找出這些事件,每次看到它們時,將你的字數減1。