该程序应该创建一个包含结果的输出文件,但文件中没有任何内容
The program is supposed to create a output file with results but there is nothing in the file
我的代码正在创建 "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 中没有任何内容,我将不胜感激
在您的输入文件中,您使用大写 '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++;
}
问题出在 Stalls[n] = tmp
行。当 n
达到 100 时程序中断,而 Stalls
只能从 0 到 99。所以你需要一个条件来打破循环。像
if(n >= 100){
break;
}
并且与 Faisal Rahman Avash 一样,您正在检查小写 x 而不是大写 X,这是 n 越界的主要原因。
我的代码正在创建 "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 中没有任何内容,我将不胜感激
在您的输入文件中,您使用大写 '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++;
}
问题出在 Stalls[n] = tmp
行。当 n
达到 100 时程序中断,而 Stalls
只能从 0 到 99。所以你需要一个条件来打破循环。像
if(n >= 100){
break;
}
并且与 Faisal Rahman Avash 一样,您正在检查小写 x 而不是大写 X,这是 n 越界的主要原因。