该程序应该创建一个带有结果的输出文件,但是文件中没有任何内容

时间:2019-06-07 02:09:11

标签: c++ ofstream

我的代码正在创建“ 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中没有任何内容,我将不胜感激

2 个答案:

答案 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超出范围的主要原因。