2016-07-18 12 views
0

Ich brauche Hilfe beim Erstellen einer Funktion, die Daten aus einer TXT-Datei in ein Array von Strukturen liest. Ich habe Probleme beim Speichern der Daten in der Array-Liste. Die Funktion loadNames sollte aufgerufen werden, um die gesamte Datei names.txt zu lesen und die Daten von jeder Zeile in eine Struktur vom Typ Name zu speichern. Die Hauptfunktion sollte ein Array von Name-Strukturen an loadNames übergeben, so dass sie einfach die Daten einer Zeile in die Struktur am ersten Element dieses Arrays lesen kann, dann liest sie die Daten der zweiten Zeile in das zweite Element usw. Dies sollte für erledigt werden alle 4429 Zeilen der Datei names.txt. Nachdem loadNames abgeschlossen und an main zurückgegeben wurde, darf die Datei names.txt während dieser Ausführung der Anwendung nie mehr gelesen werden.Speichern einer Textdatei in einem Array von Strukturen

#include <iostream> 
#include <iomanip> 
#include <fstream> 
using namespace std; 
const int SIZE=4429; 
const int NAME_LEN=21; 
const int NUM_RANKS=11; 
//Structure used to store the data contained on one line of the file. 
//name is an array of strings. 
//rank is an array of int storing 
struct Name{ 
    char name[21]; 
    int rank[11]; 
}; 
void loadNames(Name []); 

int main(){ 
    Name list[SIZE]; 
    char choice; 
    loadNames(list); 

    return 0; 
} 
//The function that has been kicking my ass I tried using a loop 
//to populate the array but I'm unable to separate the strings and the  numbers 
void loadNames(Name list[]){ 
    ifstream nameList; 
    int count=0; 
    char line[4430]; 
    int ch; 
    nameList.open("names.txt"); 
    while((ch=nameList.peek())!=EOF){ 
     nameList.getline(line,SIZE); // I was trying a [for] loop but I am   
             // not sure if it should replace the [while] loop. 
    }; 
    nameList.close(); 
} 

die txt-Datei wird wie folgt (es ist länger, aber es folgt das gleiche Format

A 83 140 228 286 426 612 486 577 836 0 0 
Aaliyah 0 0 0 0 0 0 0 0 0 380 215 
Aaron 193 208 218 274 279 232 132 36 32 31 41 
Abagail 0 0 0 0 0 0 0 0 0 0 958 
+2

es würde helfen, wenn wir das, was der Inhalt der Datei names.txt wusste war .... –

+0

es sich um eine Liste von rund 4429 Zeilen ist jeweils mit einem Namen beginnend gefolgt durch 11 Spalten von int – Francisco

+1

Gibt es Leerzeichen im Namen? Was ist das Trennzeichen? Bitte editieren Sie einige Zeilen der Datei, die in Ihrer Frage verwendet wird. –

Antwort

0

So konnte ich die Daten aus der Datei in das Array speichern, aber jetzt ist ich die Daten in Namen und Nummern Probleme beim Trennen

void loadNames(Name list[]){ 
    int count=0; 
    int ch; 
    char line[SIZE]; 
    int lineNumber[SIZE]; 

ifstream nameList; 
nameList.open("names.txt"); 
do{ 
     { 
      nameList.getline(line,SIZE); 
      strcpy (list[count].name, line); 
      } 
     count++; 
}while((ch=nameList.peek())!=EOF); 

nameList.close();