2013-07-13 115 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