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

1つの問題は、配列や文字列ではなく、char&単一の参照であるということです。char

std::string fileNameを使用し、string&パラメータを渡すと、これははるかにうまく機能します。

于 2012-09-29T19:44:13.163 に答える
0

構文が正しくありません。使用する:

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

と:

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

ここでは、変数の参照をポインター ( ) に渡しています*

必要な変更を行うと、正常に動作するはずです。

于 2012-09-29T19:30:31.350 に答える
0

input関数の2 番目のparam :char& fileNamechar への参照です。一方、必要なのは20文字の配列への参照です

したがって、次のように変更します。void input(ifstream& fin,char (&fileName)[20])

于 2012-09-29T20:22:55.753 に答える