如何从文件C初始化结构?
我有一个txt文件,它是: 我有我的结构:如何从文件C初始化结构?,c,file,pointers,struct,C,File,Pointers,Struct,我有一个txt文件,它是: 我有我的结构: 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]; str
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_行以及如何初始化结构。。
有什么想法吗?在纯C中,没有将任意数据读入数据结构的
函数
您需要将文件中的每个字节读入数据结构中的每个字节。如果是32位整数,则一次读取4个字节;如果是8字节整数,则一次读取8个字节。除非您知道自己在做什么,否则不要将文件中的结构读入内存中的结构
C语言中有一些库允许您阅读JSON等内容,但这些库对我们用户隐藏了过多的复杂性。我认为更好的方法是使用fread()一个接一个地读取内容,然后初始化。您需要编写代码,从文件中读取数据,然后使用read添加的值初始化结构。很好,您正确使用了fgets()
。现在,您尝试了什么handle\u line
?请阅读您将知道简短答案为“否”的地方。一般来说,最好在问题中包含示例数据文件的文本,而不是让我们去一些非现场资源查看它。这里有一些重要的细节,例如#
注释行和被忽略的空行,以及在输入行中使用逗号分隔的值,以及文件中两种类型的数据之间的分隔标记,这些在问题中应该是可见的。你如何识别评论行?你会如何发现一个空的,或全部空白的行?你会如何识别分离标记?哪个代码跟踪你是在读电台还是在读汽车?请注意,read_files()
中的代码有时返回值,有时不返回值;那太糟糕了。这个名字也用词不当;它读取单个文件,而不是多个文件。在某个时刻,你将面临列表和树的永久问题;如何从被调用的函数中获取数据。除非创建文件读取代码可以附加到的空列表,否则接口将无法工作。小心地使用sscanf()
解析输入行,尽管逗号空格字段分隔符需要小心。使用fread()
不是答案。输入文件位于可变长度的文本记录中,其中包含需要忽略的注释行fread()
是不合适的,除非您的建议是在一个slurp中将整个文件读入一个内存块中(这是用于在一个块中读取文件的术语),而这不是您的建议。