ファイルから数値を読み込み、配列内の数字の順序を逆にして逆の数値を別の数値に出力するプログラムを作成しようとしていますファイル。私はすでにファイルにいくつの番号があるのか知っていたときにプログラムを動作させることができましたが、私のループをEOF(ファイルの終わり)を検出しようとすると切り替えるのが難しいです。このコードを実行すると、ファイルから2つの数値が出力され、残りはガベージ値になります。どんな助け?ガベージ番号を返す理由が分かりません
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int NUMS = 5;
void reverseArray(int number[], int first, int last)
{
int temp;
if (first >= last)
{
return;
}
temp = number[first];
number[first] = number[last];
number[last] = temp;
reverseArray(number, first + 1, last - 1);
}
int main()
{
//Create file objects
ifstream inputFile;
ofstream outputFile;
string inputName;
string outputName;
//Prompt user for file names
cout << "What is the name of the input file?" << endl;
getline(cin, inputName);
cout << "What would you like the output file to be called?" << endl;
getline(cin, outputName);
//open user named files
inputFile.open(inputName);
outputFile.open(outputName);
int numsFromFile;
int numbers[NUMS];
int fileCount = 0;
/*
//read in numbers from a file ********THIS WORKS BUT WHEN I CHANGE IT BELOW IT DOES NOT******
for (int count = 0; count < NUMS; count++)
{
inputFile >> number[count];
}
*/
//Try to read numbers in detecting the EOF
while (inputFile >> numsFromFile)
{
inputFile >> numbers[fileCount];
fileCount++;
}
//print numbers to screen
for (int count = 0; count < fileCount; count++)
{
cout << numbers[count] << endl;
}
//reverse array
reverseArray(numbers, 0, 4);
cout << "Reversed is: " << endl;
//print reversed array
for (int count = 0; count < NUMS; count++)
{
cout << numbers[count] << endl;
}
//output numbers to a file
for (int count = 0; count < NUMS; count++)
{
outputFile << numbers[count] << endl;
}
outputFile.close();
inputFile.close();
return 0;
}
本当に配列を逆にする必要はありますか?なぜそれを逆の順序で出力できないのですか? 1,2,3,4を配列に読み込むと、最後から始まり4,3,2,1が出力されます。 –
私は再帰関数を使って練習していますので、これは配列を逆にする再帰関数です –