-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'的时候,所以它会比较长度为10。但是,如果你想指定一个特定的长度来比较使用strncmp(str1,str2,length)。 –
未定义的行为是未定义的。您正在将10个以上的字符(包括空字节)复制到10个字符数组中......所有投注都关闭。 –
'char str1 [10];'完成。 –