場合によってstd::strncmp
は、問題を解決できます。
int strncmp ( const char * str1, const char * str2, size_t num );
C 文字列 str1 の最大 num 文字を C 文字列 str2 の文字と比較します。
また、この問題に関して米国 DHS の国家サイバー セキュリティ部門が推奨していることもご覧ください。
strcmp に渡す前に、文字列が null で終了していることを確認してください。これは、バッファの最後に割り当てられたバイトに常に \0 を配置することで強制できます。
char str1[] ="something";
char str2[] = "another thing";
/* In this case we know strings are null terminated. Pretend we don't. */
str1[sizeof(str1)-1] = '\0';
str2[sizeof(str2)-1] = '\0';
/* Now the following is safe. */
if (strcmp(str1, str2)) { /* do something */ } else { /* do something else */ }