2014-04-08 125 views
1

我有一個硬件任務,我必須基本上都看過.dat文件並執行以下操作:讀取.dat文件並輸出?

  1. 計數文件中的字符數。
  2. 計算文件中的字數。
  3. 計算文件中的句子數。
  4. 計算文件中的行數。
  5. 查找最多字符的行。

我相信我已經有正確的代碼來做到這一點(編譯時沒有錯誤)。問題是,當我編譯並運行時,Visual Studio打開並立即關閉窗口。它不會打印出我告訴它的部分。我不知道它是不是讀取.dat文件,或者如果我把cout放在錯誤的地方! 我不必打印.dat文件中的內容。我只需要打印出上面的5個步驟。 有些人可以幫我解決這個問題嗎?

#include "stdafx.h" 
#include <fstream> 
#include <iostream> 
using namespace std; 

void main() 
{ 
ifstream input ("LAB4.DAT"); 

long c; 
long characters = 0; 
long words = 0; 
long counter = 0; 
long sentences =0; 
long newlines = 0; 
long havealpha; 

while ((c=input.get()) != EOF) 
{ 

    ++characters; 
    if(isalpha(c)) 
     havealpha=true; 
    if (isspace(c) && havealpha) 
    { 
     ++words; 
     havealpha=false; 
    } 

    if (c=='.') 
     counter = 2; 
    if (c==' ') 
     --counter; 
    if (c=='\n') 
     counter = 0; 
    if (counter <= 0) 
    { 
     ++sentences; 
     counter = 0; 
    } 

    if (c=='\n') 
     ++newlines; 

    long total = 0; 
    long line = 0; 
    long totaltemp = 0; 
    long linetemp = 0; 
    while (c!='\n') 
    { 
     ++total; 
     ++line; 
     if (total > totaltemp) 
     { 
      totaltemp = total; 
      linetemp = line; 
     } 
     if (c=='\n') 
     { 
      total = 0; 
      line = 0; 
     } 
    } 
     cout<<characters<<"Characters"<<words<<"Words"<<sentences<<"Sentences"      <<newlines<<"New Lines"<<"The longest line is"<<linetemp<<"with"<<totaltemp<<"characters" <<endl; 

} 




} 
+0

既然你有Visual Studio,你有一個體面的調試環境。在調試器中運行它,並且您的打印應該出現在IDE中,而不是在控制檯中(它會在完成後關閉)。 – mah

+0

我認爲雖然(c!='\ n')可能變成無限循環。 – Beowulf

+0

@LynnCrumbling我試過了,它保持窗口打開!但它沒有打印出我想要的代碼。它只是說「按任意鍵繼續...」,當我按下一個鍵時,它會關閉。 T.T – Nezzie

回答

1

1.對於剛剛關閉的窗口,使用Ctrl + F5而不是F5來啓動項目。 閱讀:How to keep the console window open in Visual C++?

此外,您可以避免在退出main之前使用cin.get();

  1. 其次,while (c!='\n')將進入無限循環,因爲c的值在塊內部永不改變。 適合你所有的邏輯落入一個地方, while(c!='\n')應該在while ((c=input.get()) != EOF){之下。這樣你就可以一次專注於一條線。

  2. 保持characters變量用於計算總體字符長度,並創建一個新變量來計算該特定行中的字符。

休息只是清理。

+0

+1 Thanks .... :) –

+0

@Beowulf謝謝​​!問題是無限的while循環! xD再次感謝:D – Nezzie