7

既知のサイズの圧縮unsigned char配列があります。圧縮を考慮して、最後に null ターミネータを保存しません。同じ形式の別の配列と比較したい。そうするための最良の方法は何ですか?

比較した配列を新しい配列に複製し、null ターミネータを追加してから、strcmp().

より良い提案はありますか?

4

3 に答える 3

9

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");

}
于 2013-08-26T05:53:24.213 に答える
2

2年後ですが…

「strncmp」は、圧縮文字列内にゼロバイトが見つかった場合に停止する可能性があるため、「memcmp」が使用したい関数であると思います。

于 2015-09-25T18:52:13.473 に答える
2

配列のサイズがわかっているので、次を使用できますstrncmp()

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

比較するn文字数です。

詳細: http://www.tutorialspoint.com/ansi_c/c_strncmp.htm

于 2013-08-26T05:52:49.780 に答える