该程序应该将.txt文件读入数组,我不知道它是否与文件路径或代码有关。 X&只是我用户名的占位符。我知道我可以将文件放在项目文件中,但我需要从计算机中取出它。任何帮助,将不胜感激!
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{
ifstream StuAns;
char stuAns[20];
StuAns.open("C:\\Users\\XXXXXXX\\Desktop\\StudentAnswers.txt");
if (!StuAns)
cout << "ERORR: File did not open\n";
while (int count = 0 < 20 && StuAns >> stuAns[20])
count++;
StuAns.close();
for (int i = 0; i < 20; i++)
cout << stuAns[i];
return 0;
}
答案 0 :(得分:2)
如果StuAns.open()
失败,您不会停止您的程序,您将继续尝试从未打开的文件中读取并输出未读数据。
另外,open()
并没有告诉你它为什么失败了。如果您需要该信息,则必须直接使用Win32 API CreateFile()
函数,然后如果GetLastError()
失败,您可以查询CreateFile()
。
话虽如此,您的代码中有几个错误:
StuAns[]
包含未初始化的数据,这是您最终在最终for
循环中看到输出的内容。
读取StuAns >> stuAns[20]
超出了数组的范围。有效索引仅为0..19
。你正在捣乱记忆(如果文件成功打开)。
您的while
循环编码错误。
您需要在最终的count
循环中使用20
代替for
。
试试这个:
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
ifstream StuAns;
char stuAns[20] = {};
int count = 0;
StuAns.open("C:\\Users\\XXXXXXX\\Desktop\\StudentAnswers.txt");
if (!StuAns.is_open())
{
cerr << "ERROR: File did not open\n";
return -1;
}
while (count < 20 && StuAns >> stuAns[count])
count++;
StuAns.close();
for (int i = 0; i < count; ++i)
cout << stuAns[i] << "\n";
return 0;
}