我有很多麻煩能夠從文件中獲取數據並將其輸入到給定的結構和數組結構中,然後輸出文件。我們給出一個包含96行和看起來像這樣一個文件:從文件輸出數據到結構和數組結構
Arzin,尼爾
2.3 6.0 5.0 6.7 7.8 5.6 8.9 7.6
爾斯巴貝奇,查爾斯
2.3 5.6 6.5 7.6 8.7 7.8 5.4 4.5
此文件繼續爲24個不同的人,然後重複不同的分數(第二行)。 第一個數字在這種情況下是2.3,因爲這兩個人都是難度等級。接下來的6個數字是分數。
我們給出這個數據,以建立我們的結構和數組和我的代碼:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
int main()
{
ifstream inFile;
inFile.open("C://diveData.txt");
// checking to see if file opens correctly
if (!inFile)
{
cout << "Error opening the file!" << endl;
}
const int numRounds = 2; // variable to hold the number of rounds
const int numScores = 7; // variable to hold the number of rounds
const int numDivers = 24; // variable to hold the number of divers
typedef double DifficultyList[numRounds]; // 1D array for storing difficulty of dives on each round
typedef double ScoreTable [numRounds] [numScores]; // 2D array of dive scores
// struct to store information for one diver
struct DiverRecord
{
string name;
double totalScore;
double diveTotal;
DifficultyList diff;
ScoreTable scores;
};
DiverRecord DiverList[numDivers];
// my attempt at printing out the contents of the file
while (!EOF)
{
for (int x = 0; x < 25; x++)
{
infile >> DiverList[x].name;
inFile >> DiverList[x].totalScore;
inFile >> DiverList[x].diveTotal;
cout << DiverList.[x].name << endl;
cout << DiverList.[x].totalScore << endl;
cout << DiverList.[x].diveTotal << endl;
}
}
return 0;
}
對於初學者來說,這不會讀取任何東西。 'EOF'通常是'(-1)',它總是評估爲非零,因此'while(!EOF)'將立即中斷。 – WhozCraig