[英]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.