2013-07-13 151 views
1

我在這個程序中遇到了相當困難的時間(見下面的代碼)。它應該是:C++文件訪問/輸入和輸出

  1. 創建26個組件的陣列做字母數字母表中的26個字母和行數的變量。

  2. 創建一個包含文本並將用作我的程序輸入的ASCII(或文本)文件。

  3. 調用該文件「textinput」,然後將輸出存儲在名爲「textoutput」的文件中。

誰能告訴我我做錯了什麼嗎?我不斷收到「文件未找到」錯誤。

#include <iostream> 
#include <cstdio> 
#include <iomanip> 
#include <cstdlib> 
#include <fstream> 

using namespace std; 

int main() 
{ 
int lineCount = 0; 
int letterCount[26]; 

for(int i = 0; i < 26; i++) 
    letterCount[i] = 0; 

ifstream infile; 
infile.open("textinput.txt", ios::in); 

if(!infile) 
{ 
    cerr<<"File does not exist."<<endl; 
    exit(1); 
} 

ofstream outfile; 
outfile.open("textoutput.txt", ios::out|ios::binary); 

if(!outfile) 
{ 
    cerr<<"File cannot be opened."<<endl; 
    exit(1); 
} 
char data[100]; 
outfile<<data; 

while(infile>>data) 
{ 
    outfile<<data<<endl; 
} 

while(infile) 
{ 
    char ch1 = infile.get(); 
    if(ch1 == '\n') 
    { 
     lineCount++; 
     continue; 
    } 

    int asciiNum = (int)ch1; 
    if(asciiNum > 96) 
    { 
     asciiNum = asciiNum - 97; 
    } 
    else 
    { 
     asciiNum = asciiNum - 65; 
    } 

    letterCount[asciiNum]++; 
} 
infile.close(); 
outfile.close(); 
system("PAUSE"); 
return 0; 
} 
+1

看起來'textinput.txt'與您的可執行文件不在同一個目錄中... –

+0

我同意Pierre Fourgeaud。 – furas

+0

您必須使用任何編輯器創建'textinput.txt'(帶有一些文本),並使用您的程序將其保存在目錄中。 – furas

回答

0

如果您有該文件,您的代碼是否正常工作?如果它確實嘗試刪除ios::out。如果我沒有錯誤ios::out在您不想截斷文件中的舊內容時使用,但這意味着您已擁有它。

+1

'ios :: out'用於如果你想寫文件但沒有讀。 – furas

1

ifstream class用於從文件中讀取數據並從文件中讀取,您必須先創建它,然後才能創建它,因此請先創建該文件。

這樣做是這樣的:

ifstream infile;

infile.open("textinput.txt", ios::in);

您正試圖從已尚未創建或在其他答案或描述可能是一個文件的讀取您的文件不存在於同一目錄中的評論。

您最好使用ofstream首先在文件上寫入,然後使用ifstream

2

有趣的是,「文件未找到」錯誤是不可能與您的程序。 所以,我要出去走走,並建議您需要限定可執行文件的路徑!

說,你的東西編譯像

gcc program1.cpp -o program1 

要執行,你必須使用

./program1 

因爲program1將無法​​正常工作。原因是,99%的確定性,您當前的工作目錄不在搜索PATH可執行文件中(並且您想保留它)。

除此之外,是的,請確保textinput.txt存在於同一目錄中。


(有程序中沒有這樣的錯誤消息,你應該知道:你編程吧!)

+0

我的錯誤,我的意思是說「文件無法打開」。 – The10thDoctor

+0

@ The10thDoctor您可能尚未創建該文件,或者因爲您沒有確定文件存在於同一個目錄中。 – 0decimal0