比较非null终止的char数组

时间:2013-08-26 05:49:52

标签: c arrays compression unsigned-char

我有一个已知大小的压缩unsigned char数组。由于压缩因素,我不会在最后存储空终止符。我想将它与另一个相同格式的数组进行比较。什么 这是最好的方法吗?

我想将比较的数组复制到一个新数组,添加空终止符,然后使用strcmp()进行比较。

有什么更好的建议吗?

3 个答案:

答案 0 :(得分:5)

您可以使用strncmp()

中的string.h功能
strncmp(str1, str2, size_of_your_string); 

您可以在此处手动指定字符串的大小(或您要比较的字符数)。 strlen()可能无法获取字符串的长度,因为您的字符串不会以NUL字符终止。

更新:

查看无符号字符数组

的比较代码
#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 :(得分:2)

由于你知道数组的大小,你可以使用strncmp()

int strncmp (char *string1, char *string2, int n)

n是要比较的字符数。

Deets:http://www.tutorialspoint.com/ansi_c/c_strncmp.htm

答案 2 :(得分:2)

两年后,但是......

我相信'memcmp'是你想要使用的函数,因为'strncmp'可能会在压缩字符串中找到零字节时停止。