我正在制作一个小程序,它读取文本文件并将其存储在内存中。然后,它允许用户在文件中添加另一行,替换一行,在特定行添加另一个单词等...
最后,用户可以将内存中的内容保存回文件。 我在Python中使用相同的程序并使用了多维数组,因此数组中的每个元素都是一个单词数组。 这使得访问特定行中的特定单词非常容易被其他东西替换
现在我正在尝试用C做同样的事情并且感到困惑。在一点点搞乱后,我更倾向于拥有一个有char字[]的结构。这样我就可以通过解除前一个到下一个的NextNode来删除一个特定的行。
我有两个问题: 这是实现目标的好方法吗? 2.如何制作具有固定大小的链接列表(例如,不使用malloc)。例如,如果我想要最多10行,我如何只生成10个节点并避免使用malloc?
答案 0 :(得分:1)
首先,为什么你想要固定尺寸?
很容易制作一个具有固定大小的链表(例如不使用malloc),它被称为结构数组:)
如果您可以创建结构,请说“node”:
#define MAXLEN 100
typedef struct node
{
int nLinenum;
char Data[MAXLEN];
};
你可以写:
node static_linked_list[10];
但是你需要编写一些复杂的代码来删除特定的节点。与从链接列表中删除节点(使用malloc)相比,这并不简单。
答案 1 :(得分:0)
以下是最简单的方法:(仅列出结构定义)。
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& line-> word)。