C++ txt文件将不会打开,c++;
这个程序应该将一个.txt文件读入数组,我不知道它是否与文件路径或一般代码有关。X只是我用户名的占位符。我知道我可以把文件放在项目文件中,但我需要从计算机中取出它。任何帮助都将不胜感激C++ txt文件将不会打开,c++;,c++,file,fstream,ifstream,C++,File,Fstream,Ifstream,这个程序应该将一个.txt文件读入数组,我不知道它是否与文件路径或一般代码有关。X只是我用户名的占位符。我知道我可以把文件放在项目文件中,但我需要从计算机中取出它。任何帮助都将不胜感激 #include<iostream> #include<iomanip> #include<fstream> using namespace std; int main() { ifstream StuAns; char stuAns[20]; StuAns.open("C
#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;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
伊夫斯图安;
char stuAns[20];
打开(“C:\\Users\\XXXXXXX\\Desktop\\StudentAnswers.txt”);
如果(!StuAns)
cout>stuAns[20])
计数++;
StuAns.close();
对于(int i=0;i<20;i++)
cout如果StuAns.open()
失败,您不是在停止程序,而是在继续并尝试读取未打开的文件并输出未读数据
另外,open()
不会告诉您失败的原因。如果需要该信息,您必须直接使用Win32 APICreateFile()
函数,然后如果CreateFile()
失败,您可以查询GetLastError()
也就是说,您的代码中有几个bug:
StuAns[]
包含未初始化的数据,这就是您在最后的for
循环中看到的输出
- 读取
StuAns>>StuAns[20]
超出了数组的范围。有效索引仅为0..19
。您正在破坏内存(如果文件已成功打开)
- 您的
while
循环编码错误
- 在最后的
for
循环中,您需要使用count
而不是20
试试这个:
#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;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
伊夫斯图安;
char stuAns[20]={};
整数计数=0;
打开(“C:\\Users\\XXXXXXX\\Desktop\\StudentAnswers.txt”);
如果(!StuAns.is_open())
{
cerr>stuAns[计数])
计数++;
StuAns.close();
对于(int i=0;i CUT,明确地说,不起作用?你是否得到了一个错误?什么是错误?当我测试文件是否打开时,它返回假,然后中间有两条线的一个奇怪的条形被打印20次。