比较非null终止的char数组

Dav*_*oor 3 c compression arrays unsigned-char

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

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

有更好的建议吗?

Gan*_*har 6

你可以使用strncmp()来自的功能string.h

strncmp(str1, str2, size_of_your_string); 
Run Code Online (Sandbox Code Playgroud)

在这里,您可以手动指定字符串的大小(或要比较的字符数).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");

}
Run Code Online (Sandbox Code Playgroud)

  • 实际上,它只适用于您的情况 - *压缩*二进制数据 - 因为这通常不包含零字节.任何零字节都会提前终止strncmp操作 - [strncmp definition](http://www.cplusplus.com/reference/cstring/strncmp/). (2认同)