我有一個硬件任務,我必須基本上都看過.dat文件並執行以下操作:讀取.dat文件並輸出?
- 計數文件中的字符數。
- 計算文件中的字數。
- 計算文件中的句子數。
- 計算文件中的行數。
- 查找最多字符的行。
我相信我已經有正確的代碼來做到這一點(編譯時沒有錯誤)。問題是,當我編譯並運行時,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;
}
}
既然你有Visual Studio,你有一個體面的調試環境。在調試器中運行它,並且您的打印應該出現在IDE中,而不是在控制檯中(它會在完成後關閉)。 – mah
我認爲雖然(c!='\ n')可能變成無限循環。 – Beowulf
@LynnCrumbling我試過了,它保持窗口打開!但它沒有打印出我想要的代碼。它只是說「按任意鍵繼續...」,當我按下一個鍵時,它會關閉。 T.T – Nezzie