这是一个程序,它将读取输入文件中的数字并将它们放入数组中,然后按升序对它们进行排序并将它们打印到输出文件中。从函数reset返回的变量
编译时没有错误,但程序运行时它会正确计数文件中的数字个数并存储它们,直到numsize
返回到邮件函数为零。
我测试了这个循环打印什么numsize
是每次,它不是直到main()
函数时,它变回零。
我唯一的猜测是,我无法正常返回变量,或者也许不正确,宣布它
int store (int arg[20], int numsize, istream& infile)
{
numsize = 0;
if(numsize<20)
{
infile >> arg[numsize];
}
while(!infile.eof())
{
numsize++;
if(numsize<20)
{
cout << numsize;
infile >> arg[numsize];
}
}
return numsize;
}
int printarray (int arg[20], int numsize, ostream& outfile)
{
for (int i = 0; i<= numsize; i++)
{
outfile << arg[i] << endl;
}
return 0;
}
int main()
{
int arg[20];
int numsize;
std::string input_filename, output_filename;
ofstream out_file;
ifstream in_file;
cout << "Please enter name of input file: ";
cin >> input_filename;
in_file.open(input_filename.c_str());
if (!in_file)
{
cout << "Could not open input file\n";
return 0;
}
cout << "Please enter name of output file: ";
cin >> output_filename;
out_file.open(output_filename.c_str());
if (!out_file)
{
cout << "Could not open output file\n";
return 0;
}
store(arg, numsize, in_file);
cout << numsize << "numbers were read from the input file" << endl;
printarray(arg, numsize, out_file);
return 0;
}
'numsize = 0; if(numsize <20)'?另外,如果这个if不能通过,你的循环在读取任何东西之前增加'numsize',这意味着你的数组的第一个元素是未初始化的。最后,你的['while(!eof())'是错误的。](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong)。你永远不会确保整数被实际读取。 – chris