如何在C

时间:2019-06-01 12:45:21

标签: c linux data-structures linux-kernel linux-device-driver

我有预先分配的缓冲区(字符数组),正在向其中写入字符串,它看起来像这样: “此\ 0缓冲区\ 0包含\ 0字符串\ 00000 ...”

我希望能够删除最后一个字符串,所以我想到了将缓冲区中的每个字符串表示为链接列表节点(带有指向其起点和终点的指针)的想法,因此我将找到最后一个节点并用零填充它拥有的区域。

struct node 
{ 
  char *str_start;
  char *str_end;
  struct node *next; 
};

这似乎是一个非常普遍的问题,但是,我在任何地方都找不到这种实现。

问题是:我的用例是否存在一些我忽略的数据结构,或者有更好的解决方案?

注意:这将在内核模块中使用,因此它可能已在内核中实现

1 个答案:

答案 0 :(得分:0)

您可以使用二维数组(考虑到缓冲区已预先分配,并且知道每个字符串的最大大小)。

这将使强制字符串大小更容易,从而使代码更安全。