這是一個程序,它將讀取輸入文件中的數字並將它們放入數組中,然後按升序對它們進行排序並將它們打印到輸出文件中。從函數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