我有一个已知大小的压缩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