cmd窗口停止工作,fstream读取文本文件错误

时间:2017-09-24 13:48:06

标签: c++ arrays fstream

在函数Read()中,当我输出数组klas []和nauj []时,一切似乎都被读得很好,但是在主函数中它们被破坏并且似乎被其他文本文件填充。你有什么想法吗?

#include <iostream>
#include <fstream>

using namespace std;

const char klase[] = "klase.txt";
const char naujokai[] = "lele.txt";

void Read(int klas[], int nauj[], int &nk, int &nj);

int main()
{
    int klas[] = {};
    int nauj[] = {};
    int nk;
    int nj;
    Read(klas, nauj, nk, nj);

    for(int i = 0; i < nk; i++){
        cout << klas[i] << endl;
    }for(int i = 0; i < nj; i++){
        cout << nauj[i] << endl;
    }



    return 0;
}

void Read(int klas[], int nauj[], int &nk, int &nj)
{
    ifstream fklase(klase);
    fklase >> nk;
    for(int i = 0;i < nk;i++){
        fklase >> klas[i];
        cout << klas[i] << endl << endl;
    }
    fklase.close();
    ifstream fnaujokai(naujokai);
    fnaujokai >> nj;
    for(int i = 0; i < nj; i++){
        fnaujokai >> nauj[i];
        cout << nauj[i] << endl << endl;
    }
    fnaujokai.close();

}

1 个答案:

答案 0 :(得分:2)

int klas[] = {};之类的零大小数组不是标准数据,并且像fklase >> klas[i];中那样写入它们是未定义行为,因为它们没有空间存储任何内容。另请注意,当您使用int klas[]作为函数参数时,它实际上等同于int * klas