如何在没有strlen()或搜索NULL终止符的情况下找到C中的字符串长度



我需要计算使用霍夫曼压缩编码的字符串的长度。它可能具有''字符,因此strlen()或搜索NULL终止符的任何其他函数将不起作用。如何确定这样一个字符串的长度?

不可能。在一个领域,走,直到结束。将与字段的其余部分没有什么不同,以标记结束。

  • 计算加密前的长度(加密通常不应该改变它)
  • 使用一个可能不会出现在字符串中的字符(如果有的话)作为结束符

编辑

OP提到他正在使用Huffman进行压缩。

在这种情况下,你应该让压缩函数返回压缩字符串的大小。

可以使用带int类型长度和char类型指针的结构体来存储字符串。使用malloc分配内存和memcpy来操作字符串。

重要的问题是您使用什么来加密?如果这个加密库不改变字符串的长度,你应该知道字符串之前有多大,因为你之前可以strlen()它。

如果库改变了长度,你必须传递一个缓冲区给它,并告诉库它的大小。然后标准库必须返回调用是否成功(即:缓冲区足够大)以及目标的大小。

注意:如果你使用块密码,你只允许输入一定长度的块(不短也不长),结果是固定大小的缓冲区-在openssl的情况下,有一个宏#define,说明块长度和结果的长度。

代码共享将非常感谢。

在C语言中,字符串是以二进制0结尾的字符数组。如果您的字符串中散布着0,则它不再是字符串。

在您的加密过程中,您需要存储字符串的长度,它现在不是字符串而是二进制数据。您还可以定义一个终止加密字符串的神奇字符序列,但是您必须确保这个神奇序列永远不会嵌入到加密数据中。

相关内容

  • 没有找到相关文章

最新更新