CMD窗口停止工作,文本文件使用fstream读取错误

cmd window stops working, text file is read wrong with fstream

本文关键字:fstream 读取 取错误 文件 窗口 停止工作 文本 CMD      更新时间:2023-10-16

在我输出阵列klas []和nauj []时,函数read()中的所有内容似乎都很好,但是回到主要功能中,它们被破坏并似乎被填充了其他文本文件。你有什么想法在这里有什么问题?

#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();
}

零大小的数组(例如int klas[] = {};)不是标准的,并且像您在fklase >> klas[i];中一样写入它们是不确定的行为,因为它们没有存储任何东西的空间。另请注意,当您使用int klas[]作为函数参数时,它实际上等于int * klas