簡體   English   中英

如何在沒有strlen()的情況下在C中查找字符串長度或搜索NULL終止符

[英]How to find string length in C without strlen() or searching for NULL terminator

我需要計算使用霍夫曼壓縮編碼的字符串的長度。 它可能具有'\\ 0'字符,因此strlen()或搜索NULL終止符的任何其他函數將不起作用。 如何確定此類字符串的長度?

這是不可能的。 去一塊田野, 一直走到盡頭 與結束該字段的其余部分沒有什么不同。

  • 計算加密前的長度(通常不應更改加密)
  • 使用可能不會出現在字符串中的字符(如果有)作為終止符

編輯

OP提到他正在使用Huffman進行壓縮。

在這種情況下,您應該讓壓縮函數返回壓縮字符串的大小。

您可以使用長度為int的結構體和char指針來存儲字符串。 使用malloc分配內存,使用memcpy處理字符串。

重要的問題是您使用什么加密? 如果此加密庫不更改字符串的長度,則應該知道字符串的長度,因為您可以在之前strlen()

如果庫更改了長度,則必須將緩沖區傳遞給它,並告知庫其大小。 然后,如果調用成功(例如:緩沖區足夠大)以及目標大小,則庫必須返回。

注意:如果使用分組密碼,則只允許輸入一定長度(不短或長)的分組,並且結果是固定大小的緩沖區-對於openssl,有一個#define宏來聲明該塊長度和結果的長度。

代碼共享在這里將不勝感激。

在C語言中,字符串是一個以二進制0結尾的字符數組。如果您在字符串中散有0,則它不再是字符串。

在加密過程中,您需要存儲字符串的長度,該長度現在不是字符串,而是二進制數據。 您還可以定義一個神奇的字符序列來終止加密的字符串,但隨后必須確保該神奇的序列永遠不會嵌入加密的數據中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM