我正在尝试从文本文件中读取数据并将数据保存到结构中的变量中。然而,我遇到的问题是我不知道如何制作结构的“新实例”。 Java是我的第一个编程语言,我正在考虑面向对象的算法,但我没有看到如何将它翻译成C.这就是我现在所拥有的:
if (file != NULL) {
while(status != EOF){
status = fscanf(file,"%d %d %d",&struct.var1 , &struct.var2 , &struct.var3);
}
fclose(file);
}
到目前为止我能够做的是定义我的struct的单个实例,然后添加数据,但是随着while循环的进行,数据被覆盖,所以最后保存到struct中的数据是从文件的最后一行开始。
如果我在Java中执行此操作,我将能够在循环的每次迭代之前创建一个新结构,然后将值传递给它,但因为在CI中不能简单地创建结构的新实例我是不知道该怎么做。这里的任何想法都将非常感激。
答案 0 :(得分:0)
您有两种选择。
struct
数组并连续向其中添加数据。malloc
动态分配内存并将数据添加到动态分配的struct
。当然,您必须通过数组或列表跟踪这些内容。答案 1 :(得分:0)
您可以使用malloc()
功能分配新内存。但是在使用它们之后你必须小心释放所有这些内存块,否则你将不得不处理内存泄漏。
(struct your_struct)malloc(sizeof(your_struct));
答案 2 :(得分:0)
如果你知道尺寸
,你可以预先声明一个结构数组#define STATUSMAX 2000;
...
struct StatusType statusList[STATUSMAX];
...
或者,如果size,statusMax是从其他地方传入的
struct StatusType* statusList = malloc(sizeof(struct StatusType) * statusMax);
另一种选择是创建单链或双链表。与Java不同,您将回归到C语言的基础知识 - 您必须知道列表的工作方式以及如何实现它:不要只是假设它是库中的容器。我会让你看一看 - 网上有很多例子。每当您读入新值时,请将新项目分配到列表中并将其读入。