我有三个问题,
如果我使用memcmp而不是strncmp,我会在ARM和PPC中获得“inside else”输出。怎么样和为什么?
char str[10];
memset(str,'\0',sizeof(str));
printf("str:%s ,len:%d\n\r",str,strlen(str));
if(strncmp(str,"Maximum",(strlen(str)-1)) == 0)
{
printf("inside if\n\r");
}
else
{
printf("inside else\n\r");
}
ppc输出
str: ,len:0
inside else
手臂输出
str: ,len:0
inside if
答案 0 :(得分:0)
我们将传递-1作为strncmp()
中第3个参数的值
假设第3个参数被定义为size_t
,并且假设size_t
被定义为unsigned
整数,则传入-1
将导致"环绕式"并且该函数将接收SIZE_MAX
的值。在32位系统上,这可能是0xffffffff
。