2013-04-16 151 views
0

我試圖從文件讀取鏈接列表。但由於某種原因,它甚至沒有閱讀文件的內容。從文件讀取鏈接列表C++

這是文件的結構:

Product 1 
Category 
22.33 
Product 2 
Category 
44.23 
Product 3 
Category 
66.55 

,這是讀取該文件的內容的功能。它會調用addproduct函數以按排序順序添加它所讀取的項目。

void load (NodePtr head) 
     { 
      // create a variable to attach to the file 
      ifstream input; 
      input.open("data.txt"); 

      // check to see if the file opened correctly, and if not, exit program 
      if (input.fail()) 
      { 
       cout << "\n Data file not found \n"; 
       return; 
      } 
      ListItemType data; 


      while((! input.eof()) && (head != NULL)) 
      { 
       input >> data.productname; 
       input >> data.category; 
        input >> data.productprice; 

       addproduct(head, data); 
      } 
+0

爲什麼是head!= NULL呢?每次調用函數時,頭部可能都是空的,因爲在調用函數之前頭部沒有數據。 – tay10r

+0

你是否期望任何錯誤,如果請釋放錯誤信息,我認爲你的代碼是好的,而條件你可以使用input.good() – saeed

+0

也,如果head!= NULL不是問題,它看起來不像你的當函數返回時接收頭的新指針。這可能會也可能不會成爲問題,具體取決於它是否爲fifo列表 – tay10r

回答

0

您需要接收head的新指針。而不是返回void,返回NodePtr。

NodePtr load(NodePtr head){ 

    ... 
    return head; 
} 
+0

OP在做什麼是可以接受的。他正在檢查'head'是否爲'NULL'(它可能是),在調用'addproduct()'之前不檢查他是否可能發送可能導致段錯誤的NULLed指針。 –

+0

好吧,我是在addproduct分配內存的列表下的假設。 – tay10r

+0

擺脫(head!= NULL)導致錯誤並返回nodeptr仍然不起作用 – user1896464