2013-08-26 81 views
2

我有一個已知大小的壓縮unsigned char數組。由於壓縮considiration我不存儲結束時的空終止符。我想將它與另一個相同格式的數組進行比較。什麼 將是最好的方式呢?比較非空終止字符數組

我想重複比較數組到一個新的數組,添加null終止符,然後使用strcmp()比較它們。

有什麼更好的建議嗎?

+1

或者你可以簡單地遍歷數組並比較它們的元素。 –

+1

標準內存比較函數稱爲[memcmp](http://www.cplusplus.com/reference/cstring/memcmp/) – usr2564301

回答

5

可以使用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"); 

} 
+1

strncmp是否也可以處理unsigned char字符串? @Gangadher –

+1

@DavidTzoor是的,它的確如此。 – verbose

+0

@DavidTzoor是的,它的工作原理見於添加到答案中的簡單示例。 – Gangadhar

1

兩年後,但...

我相信 'memcmp' 是你想要的功能因爲如果在壓縮字符串中發現零字節,'strncmp'可能會停止。