我有一個已知大小的壓縮unsigned char
數組。由於壓縮considiration我不存儲結束時的空終止符。我想將它與另一個相同格式的數組進行比較。什麼 將是最好的方式呢?比較非空終止字符數組
我想重複比較數組到一個新的數組,添加null終止符,然後使用strcmp()
比較它們。
有什麼更好的建議嗎?
我有一個已知大小的壓縮unsigned char
數組。由於壓縮considiration我不存儲結束時的空終止符。我想將它與另一個相同格式的數組進行比較。什麼 將是最好的方式呢?比較非空終止字符數組
我想重複比較數組到一個新的數組,添加null終止符,然後使用strcmp()
比較它們。
有什麼更好的建議嗎?
可以使用strncmp()
功能從string.h
strncmp(str1, str2, size_of_your_string);
在這裏,您可以手動給字符串的大小(或您要比較的字符數)。 strlen()
可能無法獲取字符串的長度,因爲您的字符串未以NUL
字符結尾。
UPDATE:
看到代碼無符號字符數組的比較
#include<stdio.h>
#include<string.h>
main()
{
unsigned char str[]="gangadhar", str1[]="ganga";
if(!strncmp(str,str1,5))
printf("first five charcters of str and str1 are same\n");
else
printf("Not same\n");
}
既然你知道數組的大小,你可以使用strncmp()
:
int strncmp (char *string1, char *string2, int n)
與n
是要比較的字符數。
兩年後,但...
我相信 'memcmp' 是你想要的功能因爲如果在壓縮字符串中發現零字節,'strncmp'可能會停止。
或者你可以簡單地遍歷數組並比較它們的元素。 –
標準內存比較函數稱爲[memcmp](http://www.cplusplus.com/reference/cstring/memcmp/) – usr2564301