我的代码正在创建“ output.txt”,但没有将任何内容输出到文件中。
理想情况下,它应该读取一个文本文件,例如
游戏2300.00 1000.00
甜点1500.00 900.00
音乐1500.00 1000.00
饮料3000.00 2000.00
XXXXXX
并输出
按收入的降序报告-
游戏1300
饮料1000
甜点600
音乐500
统计:-
摊位数量:4
获利的摊位数量:4
所有摊位的总利润:3400
摊位获利:音乐糖果饮料游戏
#include <iostream>
#include <fstream> // for file streaming
using namespace std;
int main()
{
ifstream f; // this is a input file object
f.open("stalls.txt"); // open file with the f object
ofstream of; // this is a output file object
of.open("output.txt"); // open file "output.txt" with the of object
while (loop) {
f >> tmp.name; // read from the file
if (tmp.name == "xxxxxx") {
loop = false;
continue;
}
如果有人可以告诉我我做错了什么,为什么output.txt中没有任何内容,我将不胜感激
答案 0 :(得分:1)
在输入文件中,您使用大写的'X'标记文件的末尾,但是在代码中,您正在检查小写的'x'。这就是为什么您的代码在输入循环期间遇到运行时错误,而从未真正进入打印输出的部分。
解决此问题,您会没事的。但我建议您检查EOF,而不要使用“ xxxxxx”标记EOF。为此,您无需在输入文件的末尾加任何标记,并像这样写输入while
:
while (f >> tmp.name) {
if (tmp.name == "xxxxxx") {
loop = false;
continue;
}
f >> tmp.income; // read income from the file
f >> tmp.expenses; // read expenses from the file
tmp.net = tmp.income - tmp.expenses;
tprofit_loss += tmp.net;
Stalls[n] = tmp;
n++;
}
答案 1 :(得分:0)
问题出在第Stalls[n] = tmp
行。当n
达到100时程序中断,而Stalls
只能从0到99。因此,您需要一个条件来中断循环。
if(n >= 100){
break;
}
还有Faisal Rahman Avash一样,您正在检查小写的x而不是大写的X,这是n超出范围的主要原因。