0

我最近的家庭作业是编写一个程序来读取文本文件并输出行数、单词数和字符数。

我刚刚开始,我现在要做的就是让用户输入文件名,然后文件就会打开。这是我不工作的代码,我一定遗漏了一些明显的东西,我只是想将流和字符传递给“输入”函数。

任何指针?

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

//Define functions.
void input(ifstream& fin, char& fileName);

int main()
{
    ifstream fin;
    char fileName[20];
    input(fin, fileName);
    return 0;
}

void input(ifstream& fin, char& fileName)
{
    cout << "Input file name: ";
    cin >> fileName;
    fin.open(fileName);

    if(fin.fail())
    {
        cout << "The file:  " << fileName << " does not open." << endl;
        exit(1);
    }
    //return;
}
4

4 回答 4

1

这可能会让你更接近。至少过去你的编译错误,但你仍然需要做一些事情。获取参考手册和调试器。

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

//Define functions.
void input(ifstream& fin, string& fileName);

int main()
{
    ifstream fin;
    string fileName;
    input(fin, fileName);
    return 0;
}

void input(ifstream& fin, string& fileName)
{
    cout << "Input file name: ";
    cin >> fileName;
    fin.open(fileName.c_str());

    if(fin.fail())
    {
        cout << "The file:  " << fileName << " does not open." << endl;
        exit(1);
    }
    //return;
}

不是我这样做的方式,但你得找个时间学习。祝你好运!

于 2012-09-29T19:42:20.507 回答
0

一个问题是char&对单个的引用char,而不是数组或字符串。

std::string fileName如果您使用, 并传递一个string&参数,这将工作得更好。

于 2012-09-29T19:44:13.163 回答
0

您的input函数的第二个参数char& fileName对 char 的引用;而 - 您需要的是对 20 个字符的数组的引用

因此,将其更改为:void input(ifstream& fin,char (&fileName)[20])

于 2012-09-29T20:22:55.753 回答
0

你的语法不正确。利用:

void input(ifstream *fin, char *fileName);

和:

input(&fin, &fileName); // call

在这里,您将变量的引用传递给指针 ( *)。

进行所需的更改,它应该可以正常工作。

于 2012-09-29T19:30:31.350 回答