我正在制作一个小程序,用于读取文本文件并将其存储在内存中。然后,它允许用户在文件中添加另一行,替换一行,在特定行添加另一个单词等......
最后,用户可以将内存中的内容保存回文件。我在Python中做了同样的程序,并使用了一个多维数组,所以数组中的每个元素都是一个单词数组。这使得访问特定行的特定单词以替换为其他内容变得非常容易
现在我正在尝试用 C 做同样的事情并感到困惑。经过一番混乱之后,我更倾向于拥有一个带有字符单词的结构[]。这样,我可以通过取消引用 NextNode 从上一个到下一个来删除特定行。
我有两个问题:1. 这是实现目标的好方法吗?2. 如何制作固定大小的链表(例如不使用malloc)。例如,如果我想最多有 10 行,我如何只创建 10 个节点并避免 malloc?
首先,为什么要固定大小?
很容易制作一个固定大小的链表(例如不使用malloc),它被称为结构:)数组
如果可以创建结构,请说"节点":
#define MAXLEN 100
typedef struct node
{
int nLinenum;
char Data[MAXLEN];
};
你可以写:
node static_linked_list[10];
但是您需要编写一些复杂的代码来删除特定节点。与从链表中删除节点(使用 malloc)相比,这并不简单。
以下是最简单的方法:(仅列出结构定义)。
struct word {
char m_word[MAX_WORD_LENGTH];
};
struct line {
struct word[MAX_WORDS_PER_LINE];
};
struct _node {
struct line m_line;
struct _node *next;
};
使用固定尺寸的 DS 将不符合您的目的。稍后,您还应该将数组(m_word和行>单词)替换为链接列表。