-3
"strx"の値を10文字以上に指定すると、strcmpは常に-1の値を示しますが、strxの値を10文字未満に指定するとstrcmpは正しい値を示します0文字列比較結果が偽陰性として表示される理由を理解できませんか?
私の具体的な質問:strxの値をstr1のサイズよりも大きく指定すると、strcmpは-1という偽の結果を放棄するのはなぜですか?
PS:コピー後にstr1とstrxを印刷しようとしましたが、同じ出力が表示されます。
#include <stdio.h>
#include <string.h>
int main()
{
char strx[]="123456789101112";
char str1[10];
strcpy(str1,strx);
int ret;
ret = strcmp(str1,strx);
printf("%d\n", ret);
if(ret == 0)
{
printf("Intact. Try Again\n");
printf("Str1 = %s\n",str1);
}
else
{
printf("Overflow successful\n");
}
return 0;
}
私は質問を理解しませんでした。文字列の長さが '\ 0'になるまで2つの文字列を比較して、長さ10まで比較します。ただし、比較する特定の長さを指定する場合は、strncmp(str1、str2、length)を使用します。 –
未定義の動作は未定義です。 10文字以上(NULLバイトを含む)を10の文字配列にコピーしています...すべてのベットがオフです。 –
'char str1 [10];'完了しました。 –