2016-04-24 41 views
-2

我有一個txt文件,該文件是:如何從文件C初始化一個結構?

http://www.siz.co.il/my.php?i=znzwlnkn2fmq.png

,我有我的結構:

typedef struct _car_s 
{ 
    char destination[50]; 
    int priority; 
    struct _car_s *next; 
    int number_id; 

}car_s, *p_car_s; 

typedef struct _station_s 
{ 
    struct _station_s *waiting; 
    char nameofstation[50]; 
    struct _station_s *detached; 

}station_s, *p_station_s; 

我想用你的幫助找出我怎麼能初始化我站和汽車從文件中推薦一個功能。 提前致謝,祝您有個愉快的一天。

編輯:

我做了一個文件閱讀功能:

int read_files(char* filename, p_car_s cars, p_station_s station) 
{ 

    FILE* myFile; 
    char buff[1024]; 
    myFile = fopen(filename, "r"); 
    if(NULL == myFile) 
    { 
     printf("\n fopen() Error!!!\n"); 
     return 0; 
    } 
    while (fgets(buff, 1024, myFile) != NULL) 
    { 
     handle_line(buff, cars, station); 
    } 


    if(fclose(myFile) == 0) 
    { 
     buff[0]='\0'; 

    } 
} 

但我似乎想起了什麼與功能Handle_line以及如何做初始化結構.. 任何想法?

+0

您需要編寫代碼讀取文件中的數據,然後使用您讀取的值初始化一個結構體 –

+0

我添加了一個讀取文件函數我做了.. – Natezone

+0

很好,您正在使用fgets() 。現在,你爲'handle_line'嘗試了什麼?請閱讀[這是一個好主意,typedef指針](http://stackoverflow.com/questions/750178/is-it-a-good-idea-to-typedef-pointers),你會發現簡短的答案是「沒有」。 –

回答

0

在純C中沒有將任意數據讀入數據結構的function

您需要將文件中的每個字節讀入數據結構中的每個字節。如果它是32位整數,則可能一次讀取4個字節,如果是8個字節整數,則可能讀取8個字節。除非你知道你在做什麼,否則不要將結構從文件讀入內存中的結構。

在C語言中有一些庫可以讓你閱讀像JSON等東西,但是這些庫隱藏了我們用戶過多的複雜性。

0

我認爲更好的方法是使用fread()逐個讀取內容,然後進行初始化。

+0

使用'fread()'不是答案。輸入文件是可變長度的文本記錄,需要忽略註釋行。 'fread()'是不合適的,除非你的提議是把整個文件讀入一塊內存中(這個術語用於讀取一個塊中的文件),這不是你的建議。 –