2016-11-07 2 views
0

Ich versuche, eine Datei zu lesen, die die Ankunftszeit und Burst-Zeit von 22 Prozessen in jeder Zeile enthält. Ich versuche, diese Werte in ein Array von Strukturen so zu speichern Ich kann sie jedes Mal aktualisieren, wenn ein Prozess einen CPU-Zyklus bekommt. Das Lesen funktioniert jedoch nicht erfolgreich.Helfen Sie mir herauszufinden, was ich vermisse. Die Datei, die eine Textdatei ist, sieht wie folgt aus: 30 0,78 \ n 54 17.28 \ n 97 32.82 \ n . . . .Wie Zeilen einer Datei in ein Array von Strukturen gelesen werden

#include<iostream> 
#include<fstream> 

using namespace std;   
const int process_cnt=22; 

struct process{   
      int at; 
      float bt; 
      float rt; 
}; 

process init_q[process_cnt],ready_q[process_cnt];   
void getData(ifstream& inData,process init_q[]); 

int main(){   
    ifstream inData;   
    getData(inData,init_q);     
    cout<<"Test";   
    return 0; 
} 

void getData(ifstream& inData,process init_q[]){       
    inData.open("input.txt");   
    while(inData){   
     inData>>init_q->at>>init_q->bt; 
     cout<<init_q->at<<" "<<init_q->bt<<endl;//check if read was succesful   
    } 
    inData.close();   
} 
+1

Sie müssen zeigen, wie die Datei aussieht. – NathanOliver

+1

Ist das eine Binär- oder Textdatei? Gibt es neue Zeilen am Ende? Hast du diesen Code ausprobiert, wenn ja, was passiert? – doctorlove

+1

Sie verwenden eine etwas unglückliche Kürzung von "Nummer" bis "Nein". Verwenden Sie 'process_cnt' anstelle von' no_process'. Es verwirrte mich (unnötig) für ein paar Sekunden. –

Antwort

2

Wahrscheinlich, was Sie vermissen ist der Index des aktuellen Array-Eintrag:

void getData(ifstream& inData, process init_q[]) { 
    inData.open("input.txt"); 
    int index = 0; 
    while (inData) { 
     process *entry = init_q[index++]; 
     inData >> entry->at >> entry->bt; 
     cout << entry->at << " " << entry->bt << endl;//check if read was succesful 
    } 
    inData.close(); 
} 

ich das Teil übersprungen prüft wird, ob der aktuelle Index ist niedriger als Ihre const 22.

+0

Ich bekomme einen Fehler "kann Prozess nicht in Prozess in Initialisierung konvertieren" für den Zeiger obwohl.Ist das echt? – jenthu

+0

Also, eine neue Fehlermeldung haben Sie jetzt den Code geändert? Was genau sagt der Fehler, und bist du sicher, dass dies keine neue Frage ist? – doctorlove

+0

Ich versuche immer noch herauszufinden, wie die Werte in jeder Zeile der Textdatei auf die Ankunftszeit und die Burst-Zeit von init_q gespeichert werden. – jenthu

Verwandte Themen