在函数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();
}
最佳答案
零尺寸的数组(例如int klas[] = {};
)不是标准的,并且像在fklase >> klas[i];
中一样写入它们是未定义的行为,因为它们没有空间存储任何东西。另请注意,将int klas[]
用作函数参数时,它实际上等效于int * klas
。
关于c++ - cmd窗口停止工作,fstream读取文本文件错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46390735/