2016-11-07 94 views
0

我试图读取一个文件,其中包含到达时间和每个行中22个进程的突发时间。我试图将这些值存储到结构数组中每次进程得到一个CPU周期时,我都可以更新它们。尽管读取操作并不成功,但请帮助我弄清楚缺少的内容。该文件是一个文本文件,如下所示: 30 0.78 \ n 54 17.28 \ n 97 32.82 \ n 。 。 。 。如何将文件的行读取到结构数组中

#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

你需要证明这个文件是什么样子的。 – NathanOliver

+1

这是一个二进制或文本文件?最后有新线吗?你有没有试过这段代码,如果是的话会发生什么? – doctorlove

+1

您正在使用“数字”到“不”的某种不幸的缩写。考虑使用'process_cnt'而不是'no_process'。它让我困惑(不必要)几秒钟。 –

回答

2

也许你缺少的是当前数组项的索引:

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(); 
} 

我跳过了部分检查当前指数是否比你更低的常量22

+0

我得到一个错误“不能转换进程在初始化过程中”的指针虽然。这是否合法? – jenthu

+0

因此,现在您更改了新的错误消息代码?错误的确切意思是说,你确定这不是一个新问题吗? – doctorlove

+0

我仍然试图弄清楚如何将文本文件的每一行中的值存储到init_q的到达时间和突发时间。 – jenthu