char s1[]=“hello” char s2[]={'h','e','l','l','o'};cout<<strcmp(s1,s2) 5

C语言计算机二级考试,请问为什么这个结果是-1,可以给出详细解释吗?... C语言 计算机二级考试,请问为什么这个结果是 -1,可以给出详细解释吗? 展开
 我来答
zjnny
2015-09-06 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1056万
展开全部

用法错误,strcmp只能比较以'\0'结尾的字符串,s2很明显不符合这个条件

至于是-1的原因,因为判断s2时会越界,造成读取到任何可能的值而s1第六位是0,s2第六位越界这个值一般不会为0的,所以结果是-1

以下是类似strcmp的实现代码,仅供参考

int strcmp(const char *dest, const char *source)
{
   while (*dest && *source && (*dest == *source))
           {
                    dest ++;
                   source ++;
           }
   return *dest - *source;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式