如何从文件C初始化结构?

时间:2016-04-24 06:24:30

标签: c file pointers struct

我有一个txt文件:

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以及如何初始化结构.. 任何想法?

2 个答案:

答案 0 :(得分:0)

在纯C中,没有function将任意数据读入数据结构。

您需要将文件中的每个字节读取到数据结构中的每个字节。如果它是32位整数,则可以一次读取4个字节;如果是8字节整数,则可以读取8个字节。除非你知道自己在做什么,否则不要将文件中的结构读入内存中的结构。

C中的库允许您阅读JSON等内容,但这些库隐藏了来自我们用户的过多复杂性。

答案 1 :(得分:0)

我认为更好的方法是使用fread()逐个读取内容然后进行初始化。