Hello all,
I am trying to create a program which keeps track of football stats for individual players. The program is setup to read a list of players names, numbers, and positions from a .txt file and then put them into a strctured array, print them to the screen, and then to a .txt file on my computer. I am getting the program to read in from the text file and print to the screen but i am getting an problem with the output stream when writing to the new file. I have worked through the code several times, and compared it to other similar programs writen to do the same thing and cannot find my error. The output file gets created, there just seems to be an error when sending information to the file in my function (printFile). the code compiles but when ran hangs up in the file stream. I am using a function to do this but i also tried it brute force with a for loop and still get the same problem. any offer of assistance would be much appreciated. Thanks! (Code Below)
// FootballDatabase.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
const int PLAYERS = 5;
struct player
{
string name;
string position;
int number;
int touchdowns;
int catches;
double rushing;
double passing;
double receiving;
};
void initialize(ifstream& infile, player list[], int listSize);
void printFile(ofstream& outfile, player list[], int listSize);
void printScreen( player list[], int listSize);
//void updateStats(string playerName);
//void searchPlayers(player list[], string playerName, int listSize);
//void menu();
//void getCommand();
//void completetask(char option, player list[], int index);
int main()
{
ifstream infile;
ofstream outfile;
string inFilename;
string outFilename;
player playerList[PLAYERS];
cout << "Please enter input filename: ";
cin >> inFilename;
cout << endl;
infile.open(inFilename.c_str());
if(!infile)
{
cout << "cannot open input file" << endl;
return 1;
}
initialize(infile, playerList, PLAYERS);
printScreen(playerList, PLAYERS);
infile.close();
infile.clear();
cout << "Enter name of output file: ";
cin >> outFilename;
cout << endl;
outfile.open(outFilename.c_str());
printFile(outfile, playerList, PLAYERS);
outfile.close();
system("pause");
return 0;
}
void initialize(ifstream& infile, player list[], int listSize)
{
int i;
for (i = 0; i <= listSize; i++)
{
// get names, number, and positions
infile >> list[i].name >> list[i].number >> list[i].position;
// Initialize stats
list[i].touchdowns = 0;
list[i].catches = 0;
list[i].passing = 0.0;
list[i].receiving = 0.0;
list[i].rushing = 0.0;
}
} // end initialize
void printScreen(player list[], int listSize)
{
int i;
for(i = 0; i < listSize; i++)
{
cout << list[i].name << " " ;
cout << setw(5) << list[i].number;
cout << setw(5) << list[i].position;
cout << setw(5) << list[i].touchdowns;
cout << setw(5) << list[i].catches;
cout << setw(5) << list[i].passing;
cout << setw(5) << list[i].receiving;
cout << setw(5) << list[i].rushing << endl;
}
} // end print to screen
void printFile(ofstream& outfile, player list[], int listSize)
{
int i;
for(i = 0; i < listSize; i++)
{
outfile << list[i].name << " " ;
outfile << setw(5) << list[i].number;
outfile << setw(5) << list[i].position;
outfile << setw(5) << list[i].touchdowns;
outfile << setw(5) << list[i].catches;
outfile << setw(5) << list[i].passing;
outfile << setw(5) << list[i].receiving;
outfile << setw(5) << list[i].rushing << endl;
}
} // end print to File