C++ 致命错误 C1075:在左大括号之前找到文件结尾,读写文件不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2672495/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
fatal error C1075: end of file found before the left brace and read and write files not working
提问by user320950
could someone also tell me if the actions i am attempting to do which are stated in the comments are correct or not. i am new at c++ and i think its correct but i have doubts
有人还可以告诉我,我在评论中说明的尝试执行的操作是否正确。我是 C++ 新手,我认为它是正确的,但我有疑问
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<iomanip>
using namespace std;
int main()
{
ifstream in_stream; // reads itemlist.txt
ofstream out_stream1; // writes in items.txt
ifstream in_stream2; // reads pricelist.txt
ofstream out_stream3;// writes in plist.txt
ifstream in_stream4;// read recipt.txt
ofstream out_stream5;// write display.txt
float price=' ',curr_total=0.0;
int wrong=0;
int itemnum=' ';
char next;
in_stream.open("ITEMLIST.txt", ios::in); // list of avaliable items
if( in_stream.fail() )// check to see if itemlist.txt is open
{
wrong++;
cout << " the error occured here0, you have " << wrong++ << " errors" << endl;
cout << "Error opening the file\n" << endl;
exit(1);
}
else{
cout << " System ran correctly " << endl;
out_stream1.open("listWititems.txt", ios::out); // list of avaliable items
if(out_stream1.fail() )// check to see if itemlist.txt is open
{
wrong++;
cout << " the error occured here1, you have " << wrong++ << " errors" << endl;
cout << "Error opening the file\n";
exit(1);
}
else{
cout << " System ran correctly " << endl;
}
in_stream2.open("PRICELIST.txt", ios::in);
if( in_stream2.fail() )
{
wrong++;
cout << " the error occured here2, you have " << wrong++ << " errors" << endl;
cout << "Error opening the file\n";
exit (1);
}
else{
cout << " System ran correctly " << endl;
}
out_stream3.open("listWitdollars.txt", ios::out);
if(out_stream3.fail() )
{
wrong++;
cout << " the error occured here3, you have " << wrong++ << " errors" << endl;
cout << "Error opening the file\n";
exit (1);
}
else{
cout << " System ran correctly " << endl;
}
in_stream4.open("display.txt", ios::in);
if( in_stream4.fail() )
{
wrong++;
cout << " the error occured here4, you have " << wrong++ << " errors" << endl;
cout << "Error opening the file\n";
exit (1);
}
else{
cout << " System ran correctly " << endl;
}
out_stream5.open("showitems.txt", ios::out);
if( out_stream5.fail() )
{
wrong++;
cout << " the error occured here5, you have " << wrong++ << " errors" << endl;
cout << "Error opening the file\n";
exit (1);
}
else{
cout << " System ran correctly " << endl;
}
in_stream.close(); // closing files.
out_stream1.close();
in_stream2.close();
out_stream3.close();
in_stream4.close();
out_stream5.close();
system("pause");
in_stream.setf(ios::fixed);
while(in_stream.eof())
{
in_stream >> itemnum;
cin.clear();
cin >> next;
}
out_stream1.setf(ios::fixed);
while (out_stream1.eof())
{
out_stream1 << itemnum;
cin.clear();
cin >> next;
}
in_stream2.setf(ios::fixed);
in_stream2.setf(ios::showpoint);
in_stream2.precision(2);
while((price== (price*1.00)) && (itemnum == (itemnum*1)))
{
while (in_stream2 >> itemnum >> price) // gets itemnum and price
{
while (in_stream2.eof()) // reads file to end of file
{
in_stream2 >> itemnum;
in_stream2 >> price;
price++;
curr_total= price++;
in_stream2 >> curr_total;
cin.clear(); // allows more reading
cin >> next;
}
}
}
out_stream3.setf(ios::fixed);
out_stream3.setf(ios::showpoint);
out_stream3.precision(2);
while((price== (price*1.00)) && (itemnum == (itemnum*1)))
{
while (out_stream3 << itemnum << price)
{
while (out_stream3.eof()) // reads file to end of file
{
out_stream3 << itemnum;
out_stream3 << price;
price++;
curr_total= price++;
out_stream3 << curr_total;
cin.clear(); // allows more reading
cin >> next;
}
return itemnum, price;
}
}
in_stream4.setf(ios::fixed);
in_stream4.setf(ios::showpoint);
in_stream4.precision(2);
while ( in_stream4.eof())
{
in_stream4 >> itemnum >> price >> curr_total;
cin.clear();
cin >> next;
}
out_stream5.setf(ios::fixed);
out_stream5.setf(ios::showpoint);
out_stream5.precision(2);
out_stream5 <<setw(5)<< " itemnum " <<setw(5)<<" price "<<setw(5)<<" curr_total " <<endl; // sends items and prices to receipt.txt
out_stream5 << setw(5) << itemnum << setw(5) <<price << setw(5)<< curr_total; // sends items and prices to receipt.txt
out_stream5 << " You have a total of " << wrong++ << " errors " << endl;
}
回答by chalup
I'd hazard a guess you're missing '}' in first else block.
我冒昧地猜测你在第一个 else 块中遗漏了 '}'。
To avoid such problems in the future, fix your indentation (or let AStyle or similar program fix it for you) and use editor that highlights the syntax (especially blocks of code between braces).
为避免将来出现此类问题,请修复缩进(或让 AStyle 或类似程序为您修复)并使用突出显示语法的编辑器(尤其是大括号之间的代码块)。
回答by rawr
Your first if else statement has a missing } after the { for your else. My suggestion: get rid of the { since it's only a single line of code.
您的第一个 if else 语句在您的 else 之后缺少一个 }。我的建议:去掉 { 因为它只是一行代码。
回答by Mike22LFC
It could be that you miss "}" in the end, another important thing that you should beware is that try to use the full address of your files. I met the same problem, and different compiler would read adresses in different ways. So try to make clear the address of files.
最后可能是您错过了“}”,您应该注意的另一件重要事情是尝试使用文件的完整地址。我遇到了同样的问题,不同的编译器会以不同的方式读取地址。所以尽量搞清楚文件的地址。