我的程序运行正常,只是它正在文件末尾读取一个看似随机的七位数字,以便为文件添加一个额外的数字,我无法弄清楚原因。我能够确定它与第一个while()循环有关。
我已经尝试了所有我能想到的东西,我注意到的一件事是,当我将全局变量更改为我知道在文件(12)中的数字数量时,它将完美地工作。但是,我想这样做是因为我不确切知道文件中有多少个数字。
新文件中的输出假设看起来像是多少但有额外的数字: 8 10 12 17 25 36 47 62 62 65 87 89 2972880 //然而,这个最后的七位数字并不存在...这里是代码......
#include <iostream>
#include <fstream>
using namespace std;
const int SIZE = 256;
int main(void)
{
int getNumbers[SIZE];
ofstream outFile;
ifstream inFile;
bool success;
int count = 0,
total = 0,
add = 1;
int num;
inFile.open("numbers.txt");
if (inFile.is_open())
{
cout << "File successfully read." << endl;
}
while (count < (total + add) && !inFile.eof())
{
inFile >> getNumbers[count];
total += add;
count++;
}
int grandTotal = (total - 1);
do
{
success = false;
for (int i = 0; i < grandTotal; i++)
{
if (getNumbers[i] > getNumbers[i + 1])
{
num = getNumbers[i];
getNumbers[i] = getNumbers[i + 1];
getNumbers[i + 1] = num;
success = true;
}
}
grandTotal--;
} while (success);
inFile.close();
outFile.open("sorted.txt");
if (outFile.is_open())
{
cout << "File successfully opened." << endl;
}
int index = 0;
while (index < total)
{
outFile << getNumbers[index]
<< " \n";
index++;
}
outFile.close();
return 0;
}
答案 0 :(得分:0)
正如@Galik所指出的,你不应该在循环条件下检查eof(),因为它总是会在最后给你一个垃圾数据点。将读取移动到循环条件。
while (count < (total + add) && inFile >> getNumbers[count])
{
total += add;
count++;
}