2016-04-24 14 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

私が作った読み込みファイル関数をIveに追加しました.. – Natezone

+0

あなたは 'fgets 。さて、あなたは 'handle_line'で何を試しましたか? [答えはtypedefポインタですか?](http://stackoverflow.com/questions/750178/is-it-a-good-ide-to-typedef-pointers)を読んで、短い答えが"いいえ"。 –

答えて

0

純粋なCでは、データ構造に任意のデータを読み込むfunctionがありません。

ファイルの各バイトをデータ構造の各バイトに読み込む必要があります。 32ビットの整数なら4バイト、8バイトの整数なら8バイトを読むことができます。あなたが何をしているのか分からない限り、メモリから構造体にファイルから構造体を読み込まないでください。

C言語ではJSONなどのようなものを読むことができるライブラリがありますが、これらのライブラリは私たちのユーザからの過度の複雑さを隠しています。

0

fread()を使用してコンテンツを1つずつ読み込んでから初期化することをお勧めします。

+0

'fread()'の使用は答えではありません。入力ファイルは、無視する必要があるコメント行を含む可変長のテキストレコードです。 'fread()'は、あなたの提案がファイル全体を1つの塊(1つの塊でファイルを読むのに使われる言葉)に読んでいない限り不適切で、それはあなたの提案ではありません。 –

関連する問題