【发布时间】:2019-08-14 02:10:31
【问题描述】:
我想从输入的二进制文件创建一个链表。第一个 sizeof(int) 字节是一个 int,下一个 sizeof(char) 字节是一个 char,它一直这样。 我想要做的是从此文件创建一个链表,其中链表中的每个节点都包含一个字符和一个包含此 int 值的树节点。
在从这个文件中创建一个链接列表时,我被卡住了。如果它只是一个带有整数且没有二进制文件和字符的常规文件,我会使用 fscanf 读取文件并将其内容存储到数组中,然后我会遍历数组并制作节点。但是,当文件中存在这些字符时,我感到很困惑。谁能帮助我并告诉我是否有创建链接列表的方法?
编辑 ->
ListNode *head = malloc(sizeof(ListNode)*sizeoffile);
//how do i find the size of the file.
//if it was a file with just integers, I would have done something like this
// int value;
// int count = 0;
//while(fscanf(fptr, "%d", &value)==1)
//{
// count++;
//}
//But now that there is chars, I am really confused how I would determine
//the size of the file.
while(!feof(fptr))
{
fread(head, sizeof(int)+sizeof(char), 1, fptr);
}
I know this is not right. ^
【问题讨论】:
-
从技术上讲,您的问题的答案是“是”(有一种创建链接列表的方法)。为什么需要先创建数组?如果可以遍历数组,就可以遍历输入文件。你到底卡在哪里了?
-
如果你想要一个答案,你需要真正澄清这个问题并表现出一些努力。让我们看看,您可以开始编辑您的问题并向我们展示您从二进制文件中读取一个整数和一个字符的代码。在此之前向我们展示此类文件的十六进制转储。
-
@melpomene 我想遍历输入文件并将其放入链表中。我很困惑,因为当 fscanf 是链表时,我不知道如何使用它。我会在参数中使用 %d 还是 %c ?我不知道如何将这两件事都放在一个节点中。我很困惑,因为该文件是二进制文件。如果我没有很好地解释我的问题,我很抱歉。
-
@CostantinoGrana 我编辑了帖子以添加代码。我没有添加代码的原因是因为我一开始不知道如何编写代码,而且我对如何编写代码感到困惑。我添加了一些代码以使我的问题更清楚。如果您能提供帮助,那就太好了,如果我的问题不清楚,我深表歉意,我是初学者,我真的不知道如何解决这个问题。
标签: c file linked-list