我有unsigned char
一个已知大小的压缩数组。由于压缩考虑,我不会在最后存储空终止符。我想将它与另一个相同格式的数组进行比较。最好的方法是什么?
我想将比较后的数组复制到一个新数组中,添加空终止符,然后使用strcmp()
.
有更好的建议吗?
我有unsigned char
一个已知大小的压缩数组。由于压缩考虑,我不会在最后存储空终止符。我想将它与另一个相同格式的数组进行比较。最好的方法是什么?
我想将比较后的数组复制到一个新数组中,添加空终止符,然后使用strcmp()
.
有更好的建议吗?
你可以使用strncmp()
函数string.h
strncmp(str1, str2, size_of_your_string);
在这里您可以手动给出字符串的大小(或要比较的字符数)。strlen()
可能无法获取字符串的长度,因为您的字符串没有以NUL
字符结尾。
更新:
参见代码以比较 unsigned char 数组
#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)
withn
是要比较的字符数。
迪茨: http ://www.tutorialspoint.com/ansi_c/c_strncmp.htm
两年后,但是...
我相信“memcmp”是您要使用的函数,因为如果“strncmp”在压缩字符串中发现零字节,它可能会停止。